◆

tsconfig types 与 typeRoots 配置详解

2023-02-02 01:370

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 的内置模块,将会编译失败。

💬留言板0

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

PAGE LOAD / LIVEtsconfig types 与 typeRoots 配置详解加载中