在使用ts开发时,引入图片报错
import img from '../../assets/images/foo.png';
找不到模块“../../assets/images/foo.png”或其相应的类型声明。
因为typescript无法识别非代码资源。我们需要主动的去声明这个module
方法一:来源:参考链接
新建一个ts声明文件:images.d.ts
declare module '*.svg'
declare module '*.png'
declare module '*.jpg'
declare module '*.jpeg'
declare module '*.gif'
declare module '*.bmp'
declare module '*.tiff'
项目编译过程中会自动去读取.d.ts这种类型的文件,所以不需要我们手动加载。放置在tsconfig.json中include属性所配置的文件夹下即可。
方法二:
如果你的项目在创建时使用:
npx create-react-app my-app --template typescript
# or
yarn create react-app my-app --template typescript
那你的src目录下会有一个 react-app-env.d.ts 文件。内容如下:
/// <reference types="react-scripts" />
该文件使用三斜线指令引入了react-scripts 的类型声明文件,在目标文件 react-app.d.ts 中声明了各类图片等资源的类型。
文件内容:
/// <reference types="node" />
/// <reference types="react" />
/// <reference types="react-dom" />
declare namespace NodeJS {
interface ProcessEnv {
readonly NODE_ENV: 'development' | 'production' | 'test';
readonly PUBLIC_URL: string;
}
}
declare module '*.avif' {
const src: string;
export default src;
}
declare module '*.bmp' {
const src: string;
export default src;
}
declare module '*.gif' {
const src: string;
export default src;
}
declare module '*.jpg' {
const src: string;
export default src;
}
declare module '*.jpeg' {
const src: string;
export default src;
}
declare module '*.png' {
const src: string;
export default src;
}
declare module '*.webp' {
const src: string;
export default src;
}
declare module '*.svg' {
import * as React from 'react';
export const ReactComponent: React.FunctionComponent<React.SVGProps<
SVGSVGElement
> & { title?: string }>;
const src: string;
export default src;
}
declare module '*.module.css' {
const classes: { readonly [key: string]: string };
export default classes;
}
declare module '*.module.scss' {
const classes: { readonly [key: string]: string };
export default classes;
}
declare module '*.module.sass' {
const classes: { readonly [key: string]: string };
export default classes;
}
只要tsconfig.json中include包含了src目录,就可以正常引入。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。