我发现我很困惑的目标和lib选项以及它们如何与源代码支持的功能进行交互。我觉得这些文档需要改进一点,所以在提出问题之前在这里提问。需要澄清的目标和lib编译器选项
我天真地认为目标指定了输出代码运行所需的JS版本(通过添加模块加载器)。因此,我们可以始终使用TS在源代码中支持的所有高级JS功能(如对象扩展),并且编译器会为我们指定的目标生成合适的代码。我认为它手边有polyfills等,代码将运行在目标虚拟机上。
但是,lib选项的文档指定默认库取决于目标。但是,库会影响可用的源类型,从而影响我们可以使用的代码。因此,我们可以使用的源特征取决于目标。这不像我预料的那样。我应该说我对lib的理解是,他们用不同的API来打样,尽管文档并没有真正地说出它们的内容。
我可以看到,这里有一些不依赖于类型和其他类型的语言功能。但目前还不清楚这是否是这种情况的原因之一。
有人可以澄清这一点吗?
第二个问题是为什么当ES6和ES2015通常被记录为同一事物时,它们都存在。
感谢
感谢一个很好的答案。所以我发现混淆的根源在于''-target'''做了这两件事,另外一些语言特性是向下编译的,而另一些则不是,但确实需要在源代码中使用lib。 –
这也是回答另一个问题 - 为什么地球上你会使用TS和Babel :)因此,一个很好的方式来定位目前许多当前的浏览器,目标是ES中的ES6,并将Babel转换为ES5。 –