TypeScript配置typeRoots和类型工作不正常



当前设置

这是我的目录结构:

root
├──typings/           # currently empty
├──package.json
├──package-lock.json
├──tsconfig.json
└──main.ts

这是我的tsconfig.json:

{
"compilerOptions": {
"typeRoots": [
"./typings"
],
"types": ["Phaser"]  
}    
}

这是我的main.ts文件:

let countdownNumber: Phaser.GameObjects.BitmapText;

然后我在终端中运行了以下命令:

tsc --traceResolution

我正在尝试将Phaser用作main.ts文件中的全局变量。

预期行为:

应该发生的是Phaser不应该被解析,因为编译器应该开始查看我的自定义文件夹typings

实际行为:

不知怎么的,它还是得到了解决。这就是它打印的:

类型引用指令"Phaser"已成功解析为包ID为"Phaser/types"的"/Applications/XAMPP/examplefiles/htdocs/phasertest/node_modules/Phaser/types/Phaser.d.ts"/phaser.d.ts@3.22.0',primary:false。

我不知道它是如何找到的,因为在我的typeRoots中,我没有指定node_modules

我尝试过的:

我试图排除node_modules文件夹,我想也许它们仍然会被编译,这就是为什么会发生这种情况,但我无法使exclude与以下任何一个一起工作:

  • "exclude": ["node_modules/*"]
  • "exclude": ["./node_modules/*"]
  • "exclude": ["./node_modules"]

但这些都不起作用。

我怀疑这是预期的行为,尽管我同意这不是超直观的

根据CCD_ 14关于类型>这会影响什么?

此选项不会影响@types/*在应用程序代码中的包含方式,例如,如果您具有以上>compilerOptions示例,代码类似:

import * as moment from "moment";
moment().format("MMMM Do YYYY, h:mm:ss a");

moment导入将是完全类型化的。

当你设置了这个选项时,通过在类型数组中不包括模块,它:

  • 不会将全局变量添加到项目中(例如,节点中的进程或Jest中的预期(
  • 不会将导出显示为自动导入建议

相关内容

  • 没有找到相关文章

最新更新