当前设置
这是我的目录结构:
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中的预期(
- 不会将导出显示为自动导入建议