缺失了 css/less/scss 等被导入的文件的类型声明。

tsconfig.json 中的 includes 数组中任意一个路径下,创建任意的类型声明文件,补充 css/less 等样式模块声明,这里以创建 src/typings/index.d.ts 文件,声明 css 模块为例:

// src/typings/index.d.ts
type CSSModuleClasses = { readonly [key: string]: string }
declare module '*.module.css' {
  const classes: CSSModuleClasses
  export default classes

不过,幸运的是,vite 已经内置了大多数类型声明,可以使用三斜线指令导入:

/// <reference types="vite/client" />

typescript 并不认识 css 文件,使用 es-module 的格式导入一个 css/less/scss 文件是需要类型声明的。

你可以在 node_modules/vite/client.d.ts 文件中找到预设的声明,这也就是上面使用三斜线指令导入其他地方的由来。

为什么会出现这个问题?

如果你是使用官方脚手架工具创建的工程,那是绝对不会有这个问题的。倘若你是使用纯手工的方式初始化一个项目,并安装了 typescriptvite 包作为开发依赖,那么缺少导入类型定义文件就会报错。

官方 vanilla + ts 模板的类型文件位于 src/vite-env.d.ts

typescript官网:三斜线指令(triple-slash-directives)

分类:
前端