TSC: что делает флаг совместимости с ES3?

Я установил пакет машинописного текста npm:

npm install typescript

и побежал

node_modules\.bin\tsc doodle.ts -t ES3

куда doodle.ts имеет:

var test = document.querySelector('.test');

Он повторил то же самое в выводе doodle.js,

Как настроить его так, в выходной я получаю:

var test = document.getElementsByClassName('.test')[0];

не должны -t ES3 флаг позаботится о таких аспектах совместимости?

1 ответ

Решение

Флаги как -es5, es3и т. д. действительно заботятся о поддержке преобразования расширенных функций TS/ES6 в их эквивалент (когда это возможно) в предыдущих версиях JavaScript (например, с for..off).

Тем не мение, document.querySelector не является частью стандарта ECMAScript. Это часть DOM API и игнорируется TypeScript. Транспортер не пытается обеспечить совместимость браузера, а, скорее, языковую совместимость. Вы можете найти прокладки, которые говорят, что они предназначены для определенных версий ECMAScript, в которые вставляются прокладки API, но это недоразумение, поскольку они не совсем одно и то же.

С TypeScript вам все еще нужно использовать прокладки для отсутствующих функций DOM, которые зависят от браузера.

Другие вопросы по тегам