@Dominik09

Как исправить ошибку при декларации графики в Typescript?

Декларировать графику в TS - это конечно боль! Сделал все как в документации, но графику подхватывать не хочет
import sprite from '@/styles/sprite.svg';
Cannot find module '@/styles/sprite.svg' or its corresponding type declarations


esModuleInterop- включен.
index.d.ts - создал в корне src. Включил в tsconfig.json
"includes" :[
    "./src/*.d.ts"
  ],

index.d.ts
///что первый, что второй вариант не помогает
declare module "*.svg";

declare module "*.svg" {
  const value: any;
  export = value;
}

reference path добавлял - не работает, да и в интернете пишут, что можно без него обойтись, что очень хотелось бы.
Есть идеи что упустил? Если не будет хватать данных, добавлю в комменты к вопросу.
UPD: Webpack настроен по абсолютным путям. Все необходимые лоадеры (file-loader, url-loader) имеются. В файлах стилей графика подхватывается без проблем. Лишь в файлах .ts не видит.
  • Вопрос задан
  • 3652 просмотра
Решения вопроса 1
@twoone
Для объявления пользовательских деклараций в корне проекта принято создавать директорию types, в которой для каждого покета создаетя поддиректоория содержащая файл index.d.ts. Имя поддиректории задается исходя из име пакета. В вашем случаи будет так ./types/svg/index.d.ts

Для декларирования расширения достаточно объявления безтелесной декларации -
declare module "*.svg";

Осталось лишь указать путь до директории types вtsconfig.json в массиве "typeRoots": ["./types"]

Для компилятора этого достаточно. Что косается поля include, по оно содержит массив путей для файлов участвующих в компиляции и в большинстве случаев объявляется совместно с полем exclude. В паре они помогают оптимизировать процесс компиляции.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы