Angular 为什么打字工具故意创建重复的打字集?

Angular 为什么打字工具故意创建重复的打字集?,angular,typescript,typescript-typings,Angular,Typescript,Typescript Typings,在阅读本节内容时,我遇到了以下内容: 键入文件冲突 TypeScript编译器不允许重新定义类型。对于 例如,如果为 承诺型 双重定义很常见。事实上,打字工具是故意的 创建重复的打字集(原因最好解释一下 其他地方)。在项目结构中查找typings文件夹,其中 我们应该找到类似于: es6垫片打字重复,浏览器d.ts和main.d.ts 有重叠的内容 如果我读了,它会说: 如果您正在构建前端软件包,建议您使用typings/browser.d.ts。浏览器类型是按照浏览器字段替代进行编译的 问题:

在阅读本节内容时,我遇到了以下内容:

键入文件冲突

TypeScript编译器不允许重新定义类型。对于 例如,如果为 承诺型

双重定义很常见。事实上,打字工具是故意的 创建重复的打字集(原因最好解释一下 其他地方)。在项目结构中查找typings文件夹,其中 我们应该找到类似于:

es6垫片打字重复,浏览器d.ts和main.d.ts 有重叠的内容

如果我读了,它会说:

如果您正在构建前端软件包,建议您使用typings/browser.d.ts。浏览器类型是按照浏览器字段替代进行编译的

问题

为什么用户故意创建重复的打字集

为什么建议您对前端软件包使用
打字/browser.d.ts

我猜是因为支持
浏览器
字段可以创建不同的类型


如果是这样的话,
浏览器
字段是什么?它以何种方式改变打字?

您的猜测是正确的。打字识别包在浏览器和其他位置上的功能可能不同。对于大多数常见的软件包来说,此功能是不必要的,因为同构JS是一种潮流,而且许多软件包在所有JS环境中都具有相同的功能

但是,如果我的代码是故意检查环境的功能,或者如果我想阻止用户使用浏览器中被破坏的功能,那么拥有这些功能会很有帮助

这里有一个例子。我有一个颜色选择器包。如果我在桌面上,这个软件包将允许我从屏幕上的任何地方选择颜色。显然,这依赖于系统级API,浏览器无法使用。另一方面,我的浏览器可以在浏览器窗口中选择颜色。我没有发布一个全新的包,而是向程序员公开不同的类型,以便他们知道基于他们的环境允许哪些功能


最终,您只需花费很少的成本(除了计算机上的文件空间)和可能无法实现的功能

所以,
main
文件夹将包含节点的定义,这就是您的意思吗?@Ibrahim node主要是,但也包括其他基于JS的环境。:)只是不是浏览器。
typings
  browser
    ambient
      es6-shim
        es6-shim.d.ts
  main
    ambient
      es6-shim
        es6-shim.d.ts
  browser.d.ts
  main.d.ts