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, которые зависят от браузера.