gpt4 book ai didi

javascript - 如何排除 TypeScript 定义中声明的全局类型?

转载 作者:太空宇宙 更新时间:2023-11-04 01:41:52 25 4
gpt4 key购买 nike

许多库都是为 Web、Node 服务器和 React Native 等移动应用程序编写的。因此,它们可以通过 <script /> 包含在内标签,调用require() ,或使用现代的import关键字,尤其是当您使用 Webpack 等工具或 React Native 等框架时。

因此,它们的 TypeScript 依赖项通常不仅使用 export 来公开类型关键字,而且也在全局命名空间中。这允许代码在浏览器上使用 TypeScript,并包含可能来自使用 <script /> 的 CDN 的库。标签以利用在这些环境中全局可用的类型。

例如,jquery , big.js ,还有更多的库使用这种模式。

当您编写现代 JavaScript 但使用为浏览器情况公开全局类型的库时,如何排除这些类型进入 Node 和 React Native 等实际上不可用的环境中的全局命名空间?

最佳答案

编译 TypeScript 代码时,假设您已使用 npm install @types/node @types/jestuse the types flag 等方式安装了打字功能。指定全局包含哪些类型声明。例如,在 tsconfig.json 中,包含如下代码:

{
compilerOptions: {
// ...
// @types/node and @types/jest will be included globally.
types: ["node", "jest"],
// ...
}
}

这样,TypeScript 将仅自动包含那些指定库的声明,包括全局库。当您导入时,其余类型仍然有效 - TypeScript 在看到您导入时会解析这些库 - 但这样,只有您指定的为您的环境提供全局类型的库才可用,从而使 TypeScript 编译器能够更可靠地通知您缺少导入。

感谢 Github @googol for the tip on DefinitelyTyped .

关于javascript - 如何排除 TypeScript 定义中声明的全局类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52621222/

25 4 0
文章推荐: iphone - MiniZip 泄漏
文章推荐: css - "@media only ..."是有效的 css
文章推荐: html - 样式禁用