/ / Чи декоратори ECMAScript 2016 роблять декоратори TypeScript надлишковими? - машинопис, ecmascript-6, ecmascript-7, ecmascript-next

Чи декоратори ECMAScript 2016 роблять декоратори TypeScript зайвими? - магнітна машина, ecmascript-6, ecmascript-7, ecmascript-next

TypeScript є суворим набором ECMAScript2015 і вже має підтримку декоратора. Чи означає це, що з введенням декораторів ECMAScript 2016 декоративники TypeScript стають зайвими, чи означає, що йти вперед TypeScript повинен змінити свою базову реалізацію, щоб створити декоратори ECMAScript 2016?

Відповіді:

4 для відповіді № 1

Як зазначено в документи щодо декораторів:

Декоратори - це експериментальна особливість, яка може змінитися в майбутньому випуски

Typescript дозволяє використовувати майбутні функції, які ще не реалізовані у всіх 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.