TypeScript является строгим дополнением ECMAScript 2015 и уже имеет поддержку декоратора. Означает ли это, что с внедрением декораторов ECMAScript 2016 декодеры TypeScript становятся излишними или означает ли это, что нужно идти вперед. TypeScript должен изменить свою базовую реализацию для создания декораторов ECMAScript 2016?Декораторы ECMAScript 2016 делают излишние декодеры TypeScript?
ответ
Как говорится в docs regarding decorators:
Декораторов является экспериментальной функцией, которая может измениться в будущих выпусках
Машинописи позволяет использовать будущие возможности, которые все еще не реализованы во всех JS путем компиляции вывода в js, который соответствует целевой среде.
Так, например, это:
function deco(constructor: Function) { }
@deco
class A { }
компилирует в:
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
function deco(constructor) { }
var A = (function() {
function A() {
}
return A;
}());
A = __decorate([
deco
], A);
Как вы можете видеть, версия JS содержит все, что нужно, чтобы сделать его работу.
Если что-то изменится, то да, компилятор изменится, чтобы вывести правый js.
См. Я не понимаю, какой бит сгенерированного кода '__decorate', если реализация underling изменена для transpiler, это, безусловно, сделает код более читаемым для таких людей, как я, хотя не уверен, что reablity - это вообще принцип транспилятора и thay предпочли бы продолжать генерировать то же самое, пока что-то не сломается. – ishandutta2007
Скомпилированный js не предназначен для чтения, он предназначен для работы и имеет как можно меньше места. Вы не должны изменять скомпилированный js самостоятельно, и вам следует доверять, что компилятор выведет правильный код на основе указанного вами целевого объекта. –
@ ishandutta2007 Я предполагаю, что вы спросите, будут ли декодеры TS в конечном итоге скомпилировать декодеры ES. Это справедливый вопрос, я не думаю, что мы знаем ответ на этот вопрос, но я ожидаю, что это вероятно. Есть уже задачи ES2016, ES2017, ESNext', но я не знаю, испускает ли компилятор декораторы ES для любой из этих целей (пока), и я не знаю, являются ли они даже совместимыми спецификациями на этом этапе. Я тоже хотел бы знать это! – Aaron
- 1. Что делают декораторы в угловом2 в компонентах?
- 2. Поддержка ECMAScript 6 в PhpStorm 2016
- 3. Очистить излишние слова в поле даты
- 4. Объединение здесь кажется излишние
- 5. Моно совместимые RAW-декодеры изображений
- 6. Разница между оператором экспоненции ECMAScript 2016 и Math.pow()
- 7. Насколько совместим (будет) TypeScript для ES6 (ECMAScript 2015)
- 8. Как реализованы декоративные декодеры/декодеры времени (например, подвижные строки столбцов Grid) в компонентах WinRT?
- 9. Удалите излишние доступа поле клетки
- 10. Eclipse ide отображает излишние символы
- 11. Netty UDP-совместимые декодеры
- 12. Декодеры символов в Java
- 13. Предзаводчики и декодеры. Разница
- 14. Python-подобные декодеры C++
- 15. ECMAScript
- 16. Машинописи Декораторы состояние
- 17. Что делают входы конструктора классов в TypeScript Ionic 2?
- 18. Дизайнеры-декодеры в качестве миксинов?
- 19. выберите конкретные декодеры, используя JQuery
- 20. PEP 8 и декодеры Python
- 21. Хэмминг-декодеры кода в python?
- 22. Индексы и декодеры пакетного кода
- 23. Декодеры DirectShow, отбрасывающие медиа-время
- 24. Функция Декораторы
- 25. Декораторы Python
- 26. Заявление декораторы
- 27. Декораторы затрат
- 28. Понимание декораторы
- 29. Удалите излишние имена файлов в GNUPLOT рисунке
- 30. Цель позволяет излишние в определении запятой класса
до 90% времени, когда вы генерируете ES5, вам это действительно неинтересно ... И es2016, и машинопись будут преобразованы в что-то еще – smnbbrv
true, но я говорю о времени, когда машинопись больше не генерирует ES5. – ishandutta2007
Декораторы не входят в состав ES2016. –