【发布时间】:2017-07-22 16:37:51
【问题描述】:
我试图了解 Typescript 编译器何时会转译代码以使其与我指定的目标 ECMAScript 版本(ES5 或 ES3)兼容。
例如,TSC 可以很好地转换 for(var int of intArray),但不能转换 Number.isInteger()(这是 ES6 特性,根据 w3schools)。
Number.isInteger() 在 IE
什么可以被编译,什么不能?我最初预计所有内容都会被转译,这样我就不必跟踪这样的事情,但事实似乎并非如此。
【问题讨论】:
-
我相信 TS 处理这个很像
Promise<T>类型。也就是说,它假设你已经输入了它,你已经有了一个 polyfill。虽然Number.isInteger是微不足道的 polyfill,但 polyfill 并不是 TS 想要做的事情。例如,请参阅this comment about polyfills。 -
如果是这种情况,如果 IDE 提醒我我的代码与我的目标 ECMAScript 版本不兼容,那就太好了。我开始使用 Number.isInteger() 是因为 Visual Studio 向我提供了它,但后来才发现许多(相对现代的)浏览器不支持它。不知道还有什么“地雷”在等着你!
-
使用像es6-shim 这样的东西可能是个好主意,它可以填充很多可能丢失的东西,至少在你知道你的目标浏览器支持所有功能之前。
标签: typescript target transpiler