如何在保持默认行为的同时扩展 tsconfig 中的类型

问题描述 投票:0回答:3

根据 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”中未列出的附加类型而不是覆盖它来扩展默认行为?

typescript
3个回答
1
投票

正如@mseyfayi 善意地给你提示,你可以利用

Modules .d.ts

的好处

模块.d.ts - TS 文档

以下问题和答案可能对您有帮助。

typescript:如何扩展现有模块定义?

这也可能对您有帮助缺少类型(来自上面的帖子)


这并不完全是你想要的,只是为了仅供参考

可选全球使用

您可以使用导出作为名称空间来声明您的模块将在 UMD 上下文中的全局范围内可用:

什么是UMD? - TS 文档

// declarations.d.ts
export as namespace moduleName;

不要忘记将

.d.ts
文件添加到您的
tsconfig.json

现在全球可用。

// tsconfig.json
{
    "compilerOptions": {
        ...
    },
    "include": [ declarations.d.ts ],
}

快乐编码!


0
投票

不,你不能,你可以阅读此选项的代码。默认行为很特殊。

我相信可以通过提供更多祖先

node_modules
文件夹来模仿它:

{
  "typeRoots": [
    "./node_modules/@types",
    "../node_modules/@types",
    "../../node_modules/@types",
    // ...
  ]
}

-1
投票

不确定我的理解是否正确,但你可以做的是创建一个 tsconfig.json 并扩展它。

所以这里有一个 tsconfig.base.json

{
 "compilerOptions": {
   "types": ["node", "jest", "express"]
 }
}

然后你还有另一个tsconfig.my.json,其中

{
  "extends": "./configs/tsconfig.base.json",
  "files": ["main.ts", "yadayada.ts"]
}

这是您要找的吗?

© www.soinside.com 2019 - 2024. All rights reserved.