如何在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>;
}