web-dev-qa-db-fra.com

Importation d'images typographiques

J'ai trouvé une solution ici: Importation d'image Webpack et TypeScript

Mais je reçois une erreur pour cela:

[ts]
Types of property 'src' are incompatible.
  Type 'typeof import("*.png")' is not assignable to type 'string | undefined'.
    Type 'typeof import("*.png")' is not assignable to type 'string'.

Je suppose que j'ai besoin de lancer l'importation d'une manière ou d'une autre, mais je ne sais pas comment. Je fais cela dans React. J'ai vu que l'attribut src est défini comme string | undefined, c'est pourquoi l'erreur apparaît.

Voici le code:

import * as Logo from 'assets/images/logo.png';

HTML:

<img src={Logo} alt="" />

Et définition basée sur la solution mentionnée ci-dessus:

declare module "*.png" {
  const value: string;
  export default value;
}

Tsconfig:

{
  "compilerOptions": {
    "baseUrl": "./",
    "jsx": "react",
    "lib": ["es5", "es6", "dom"],
    "module": "commonjs",
    "noImplicitAny": false,
    "outDir": "./dist/",
    "sourceMap": true,
    "strictNullChecks": true,
    "target": "es5",
    "typeRoots": [
      "custom_typings"
    ]
  },
  "include": ["./src/**/*.tsx"],
  "exclude": ["dist", "build", "node_modules"]
}
9
Mario Petrovic

L'une des façons de se débarrasser de cette erreur consiste à modifier le fichier d.ts comme suit:

declare module "*.png"

retirer

{
  const value: string;
  export default value;
}

ou bien vous pouvez faire:

declare module "*.png" {
  const value: any;
  export default value;
}

Mise à jour

La meilleure solution avec la vérification de type est:

declare module "*.png" {
   const value: any;
   export = value;
}
24
Piyush Zalani