背景

项目由 JS 向 TS 转型时,若使用 import 的方式引入 JS 文件,则在脚本检查 TS 时,会报错找不到这些 JS 文件,造成 TS 检查日志里有很多同样的信息,因此很难找到真正的 TS 报错信息。

三种解决方案

1. 给 JS 文件增加类型

工作量太大,毕竟之前都是用 JS 写的,收益率太低。

2. 在 TS 中使用 require 方式导入 JS

在脚本检查 TS 时不会出现找不到 JS 的冗余日志,但该文件无法链接到原文件(跳转会失效)。

3. tsconfig 中的 files 字段配置全局的类型文件

在该文件中写入:

declare module '*'

这样即使使用 import 的方式导入 JS 文件,也不会出现上述冗余日志。但点击该文件时会直接跳转到配置的全局类型文件中,感觉很不爽。

补充:实际项目里更推荐的做法是给 jsconfig.json / tsconfig.json 配置 allowJs: true 并打开 checkJs: false,让 JS 文件参与工程但不强制类型检查;如果是第三方 JS 库,应安装对应的 @types/xxx 包,或自行编写 .d.ts 文件,而不是用 declare module '*' 把所有 JS 都退化为 any。

来源整理自:vue3js.cn 面试官系列