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

时间:2016-03-01 15:43:34

标签: angular typescript typescript-typings

阅读Angular 2 QuickstartTypeScript Configuration下的typings readme

  

键入文件冲突

     

TypeScript编译器不允许重新定义类型。对于   例如,如果它给出了两个定义,则会抛出错误   承诺类型。

     

双重定义很常见。事实上,刻意工具是故意的   创建重复的打字集(出于最佳解释的原因   别处)。在项目结构中查找typings文件夹所在的位置   我们应该找到类似的东西:

typings
  browser
    ambient
      es6-shim
        es6-shim.d.ts
  main
    ambient
      es6-shim
        es6-shim.d.ts
  browser.d.ts
  main.d.ts
  

es6-shim类型是重复的,并且是browser.d.ts和main.d.ts   内容重叠。

如果我看了typings tool,就说:

  

如果您正在构建前端软件包,建议您使用typings / browser.d.ts。浏览器字典按照浏览器字段覆盖进行编译。

问题

为什么{{3}}故意创建重复的打字集?

为什么建议您使用typings/browser.d.ts作为前端程序包?

我的猜测是因为支持browser字段可以创建不同的类型?

如果是,那么browser字段是什么以及它改变打字的方式是什么?

1 个答案:

答案 0 :(得分:4)

你的猜测是正确的。类型识别包可以在浏览器和其他位置以不同的方式运行。对于大多数常见的包,这个功能是不必要的,因为同构JS很时髦,许多包在所有JS环境中都具有相同的功能。

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

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

最终,您的成本很低(除了计算机上的文件空间)以及可能无法实现的功能。