根据 TypeScript 的文档,在
types
中设置值将覆盖默认行为并仅查找我指定的类型:
默认情况下,所有可见的“@types”包都包含在您的编译中。任何封闭文件夹的 node_modules/@types 中的包都被视为可见。例如,这意味着 ./node_modules/@types/、../node_modules/@types/、../../node_modules/@types/ 等中的包。
如果指定了类型,则只有列出的包才会包含在全局范围内。例如:
"compilerOptions": { "types": ["node", "jest", "express"] } }
此 tsconfig.json 文件将仅包含 ./node_modules/@types/node、./node_modules/@types/jest 和 ./node_modules/@types/express。不包含node_modules/@types/*下的其他包。
有没有办法通过提供“@types”中未列出的附加类型而不是覆盖它来扩展默认行为?
正如@mseyfayi 善意地给你提示,你可以利用
Modules .d.ts
的好处
以下问题和答案可能对您有帮助。
这也可能对您有帮助缺少类型(来自上面的帖子)
这并不完全是你想要的,只是为了仅供参考
您可以使用导出作为名称空间来声明您的模块将在 UMD 上下文中的全局范围内可用:
// declarations.d.ts
export as namespace moduleName;
不要忘记将
.d.ts
文件添加到您的 tsconfig.json
现在全球可用。
// tsconfig.json
{
"compilerOptions": {
...
},
"include": [ declarations.d.ts ],
}
快乐编码!
不,你不能,你可以阅读此选项的代码。默认行为很特殊。
我相信可以通过提供更多祖先
node_modules
文件夹来模仿它:
{
"typeRoots": [
"./node_modules/@types",
"../node_modules/@types",
"../../node_modules/@types",
// ...
]
}
不确定我的理解是否正确,但你可以做的是创建一个 tsconfig.json 并扩展它。
所以这里有一个 tsconfig.base.json
{
"compilerOptions": {
"types": ["node", "jest", "express"]
}
}
然后你还有另一个tsconfig.my.json,其中
{
"extends": "./configs/tsconfig.base.json",
"files": ["main.ts", "yadayada.ts"]
}
这是您要找的吗?