Dans les fichiers TypeScript(*.tsx)
, je ne peux pas importer de fichier svg avec cette instruction:
import logo from './logo.svg';
Transpiler dit: [ts] cannot find module './logo.svg'.
Mon fichier svg est simplement <svg>...</svg>
.
Mais dans le fichier .js
, je suis en mesure de l'importer sans aucun problème avec exactement la même instruction d'importation. Je suppose que cela a quelque chose à voir avec le type de fichier svg qui doit être défini de façon ou d'autre pour ts transpiler.
Pourriez-vous s'il vous plaît partager comment faire pour que cela fonctionne dans les fichiers ts?
Si vous utilisez Webpack, vous pouvez le faire en créant un fichier de types personnalisé.
Créez un fichier nommé custom.d.ts avec le contenu suivant:
declare module "*.svg" {
const content: any;
export default content;
}
Source: https://webpack.js.org/guides/TypeScript/#importing-other-assets
Merci smarx pour nous avoir signalé l’utilisation de require()
. Donc dans mon cas, cela devrait être:
const logo = require("./logo.svg") as string;
qui fonctionne très bien dans les fichiers * .tsx
J'ai eu le même problème en essayant un didacticiel de réaction + TypeScript.
Ce qui a fonctionné pour moi a été la déclaration d'importation suivante.
import * as logo from 'logo.svg'
Voici mes dépendances dans package.json.
"dependencies": {
"react": "^16.8.4",
"react-dom": "^16.8.4",
"react-scripts-ts": "3.1.0"
},
J'espère que ça aide quelqu'un.
Nous avons implémenté une autre façon de procéder: créer vos composants SVG. Je l’ai fait parce qu’il m’avait mal pensé que j’utilisais les instructions commonJS require
aux côtés de mes import
s.