Почему классы ES2015 не могут быть надежно перенесены в TypeScript? - PullRequest
3 голосов
/ 06 июня 2019

Я недавно наткнулся на следующее утверждение на MDN :

Обратите внимание, что ES2015 классы не могут быть надежно перенесены в Babel 6 илиTypeScript ориентирован на устаревшие браузеры.Вы можете использовать Babel 7 или babel-plugin-transform-встроенные классы для Babel 6 и нацелить ES2015 на TypeScript вместо прежних.

Является ли этот оператор устаревшим для TypeScript> 3.xxили кто-нибудь может объяснить, какие недостатки существуют для транспонирования TypeScript?

Я не заметил проблем при установке target в ES5 в tsconfig.json, кроме того, что мне пришлось добавить еще несколько функций (как и ожидалось).

Понимание этих проблем, если они существуют, было бы очень полезно при работе с пользовательскими элементами и веб-компонентами.

1 Ответ

2 голосов
/ 06 июня 2019

Как объяснено на странице Github полифилла Custom Element , пользовательские элементы определяются как расширения класса HTMLElement, для которых требуется новая функция ES6, которая не может быть полностью эмулирована с помощью ES5 Javascript: super() / Reflect.construct():

Спецификация требует, чтобы элемент вызывал конструктор HTMLElement. Обычно класс стиля ES5 делает что-то вроде HTMLElement.call (this) для эмуляции super (). Однако HTMLElement должен вызываться как конструктор, а не как простая функция, т. Е. С Reflect.construct (HTMLElement, [], MyCEConstructor), иначе он выдаст.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...