阅读Angular 2 Quickstart我TypeScript 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
字段是什么以及它改变打字的方式是什么?
答案 0 :(得分:4)
你的猜测是正确的。类型识别包可以在浏览器和其他位置以不同的方式运行。对于大多数常见的包,这个功能是不必要的,因为同构JS很时髦,许多包在所有JS环境中都具有相同的功能。
但是,如果我的代码故意检查环境的功能,或者如果我想阻止用户使用浏览器中破坏的功能,那么拥有它会很有帮助。
这是一个例子。我有一个颜色选择器包。这个包,如果我在桌面上,将允许我从我的屏幕上的任何地方选择颜色。显然,这依赖于系统级API,浏览器无法使用。另一方面,我的浏览器可以在浏览器窗口中选择颜色。我没有发布一个全新的软件包,而是向程序员展示了不同的类型,以便他们根据自己的环境知道允许哪些功能。
最终,您的成本很低(除了计算机上的文件空间)以及可能无法实现的功能。