如何在TypeScript内引入静态资源
在ts文件中,如果引入了静态资源模块(比如css、图片等),会报错,提示找不到模块。
// TS2307: Cannot find module './index.css' import './index.css';
可以使用全局类型声明写法,来声明类型。
declare module '*.css' { const style: { [key: string]: string }; export default style; }
一份可用的完整配置
declare module '*.css' { const style: { [key: string]: string }; export default style; } declare module '*.sass' { const style: { [key: string]: string }; export default style; } declare module '*.scss' { const style: { [key: string]: string }; export default style; } declare module '*.less' { const style: { [key: string]: string }; export default style; } declare module '*.styl' { const style: { [key: string]: string }; export default style; } declare module '*.png' { const url: string; export default url; } declare module '*.jpg' { const url: string; export default url; } declare module '*.jpeg' { const url: string; export default url; } declare module '*.gif' { const url: string; export default url; } declare module '*.webp' { const url: string; export default url; } declare module '*.svg' { import type { FunctionComponent } from 'react'; const url: string; // 如果使用@svgr/webpack加载svg,还会导出ReactComponent组件 export const ReactComponent: FunctionComponent; export default url; } declare module '*.vue' { import { defineComponent } from 'vue'; export default ReturnType<typeof defineComponent>; }