Как импортировать SVG в компонент с помощью Create React App и TypeScript?

У меня есть проект React, написанный на JS, который я конвертирую в TS. Используя JS, это работает:

import { ReactComponent as IconPerson } from '../../../icons/person.svg';

Используя TS, я получаю эту ошибку:

Не удается найти модуль '../../../icons/person.svg' или его соответствующие объявления типов.

Я добавил следующее в новый файл index.d.ts:

declare module '*.svg';

Я также добавил файл index.d.ts в массив include в моем tsconfig.json:

{
  include: ["src", "**/*.ts", "**/*.tsx", "index.d.ts"]
}

Что мне не хватает?

Отвечает ли это на ваш вопрос? Невозможно импортировать файлы svg в машинописный текст

damonholden 29.11.2022 23:31
const svg = require("../../../icons/person.svg") as string; Можно попробовать?
DreamBold 29.11.2022 23:31

вы используете вебпак?

monim 29.11.2022 23:51

@monim Да, но это входит в пакет react-scripts, так как я использую приложение Create React.

Michael Lynch 29.11.2022 23:53
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
4
153
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это работает для меня:

declare module '*.svg' {
  import React = require('react');
  export const ReactComponent: React.FC<React.SVGProps<SVGSVGElement>>;
}

Кредит: https://stackoverflow.com/a/54122106/2262604

Мне кажется странным создание переменной ReactComponent, но я больше не получаю ошибок TS.

Другие вопросы по теме