◆
tsconfig types 与 typeRoots 配置详解
typeRoots
这个用于指定类型声明文件的查找路径。默认值为 node_modules/@types,主要用于配置类型声明文件的查找目录。
示例
import { join } from 'path';
如上我们使用了 node 的 path 模块。当我们没有安装 @types/node 时,ts 会提示如下报错
TS2307: Cannot find module 'path' or its corresponding type declarations.
这时我们执行 pnpm add @types/node 安装 node 的 types 类型文件。 当我们安装成功后会发现之前的 node 报错提示没有了,但为什么安装后 ts 就直接识别了 @types/node。 这就是 typeRoots 起了作用,安装的 @types/node 默认安装在 node_modules/@types 中,而 typeRoots 默认的识别类型文件的路径也是 node_modules/@types,所以无需任何配置就能识别成功。
配置示例
这时我们将 node_modules/@types 文件夹中的 node 迁移到任意一个文件夹, 如 types,删除后会发现 ts 对 path 的识别又失败了。 那么怎么样才能让 ts 去识别呢,配置如下即可。我们加了一个 types 目录,这时 ts 查找类型文件配置的时候, 如果在默认的 node_modules/@types 没有找到,那么就会紧接着在 types 文件夹查找。
"typeRoots": [
"node_modules/@types",
"types"
]
如果指定了
typeRoots目录的值,只会从指定的目录中去查找,默认值将失效
types
这个需要配合 typeRoots 来使用,用于指定需要包含的模块,只有在这里列出的模块的声明文件才会被加载进来,其属性值为一个数组, 如果将 types 设置为一个空的数组,那么 typeRoots 配置的目录里的声明文件都将不会被加载进来, 比如此时如果源文件中使用到了 node 的内置模块,将会编译失败。

还没有留言,来发表第一条吧~