为什么不能在TypeScript中可靠地转译ES2015类?

时间:2019-06-06 08:03:51

标签: typescript ecmascript-6 web-component custom-element

我最近偶然发现了关于MDN的以下声明:

  

请注意,无法在针对旧版浏览器的Babel 6 或TypeScript 中可靠地编译 ES2015类。您可以将Babel 7或babel-plugin-transform-b​​uiltin-class用于Babel 6,并在TypeScript中将ES2015定位为目标,而不是使用legacy。

对于TypeScript> 3.x.x来说,这句话已经过时了吗?还是有人可以解释TypeScript转换存在哪些缺点?

target中将ES5设置为tsconfig.json时,我没有注意到问题,除了必须填充一些其他功能(如预期的那样)。

了解这些问题是否存在,在处理自定义元素和Web组件时将非常有帮助。

1 个答案:

答案 0 :(得分:2)

Custom Element polyfill的Github页面中所述,“自定义元素”定义为HTMLElement类的扩展,它需要新的ES6功能,无法用ES5 Javascript完美地仿真:{{1 }} / super()

  

该规范要求元素调用HTMLElement构造函数。通常,ES5样式类会执行类似HTMLElement.call(this)的操作来模仿super()。但是,必须将HTMLElement作为构造函数而不是作为普通函数调用,即使用Reflect.construct(HTMLElement,[],MyCEConstructor),否则它将抛出。