Декоратор Typescript, обманывающий 2 аргумента, как это скомпилировать?
Я читал больше о декораторах в машинописи и ES7. И я попробовал этот простой код:
function decorator(...args) {
console.log(args);
}
//@decorator
class foo {
constructor() {}
@decorator
method() {}
}
let bar = new foo();
bar.method();
Вот что я получаю в консоли:
$ npm install -g typescript@2.1.15
$ npm install -g @types/node
$ tsc --experimentalDecorators file.ts
$ node file.js
[ foo { method: [Function] }, 'method' ]
Всего два аргумента.
Однако, если я выполню это на игровой площадке, у меня будет этот результат
Array[3]
Где Arra[0] и Array[2] являются объектами, а Array[1] является строкой.
Как это возможно? Кроме того, как мне правильно скомпилировать машинопись с экспериментальными декораторами?
Мои наилучшие пожелания...
1 ответ
Решаемые. Согласно https://www.typescriptlang.org/docs/handbook/compiler-options.html целью по умолчанию является ES3.
Установка цели в ES5 решает проблему:
$ tsc --experimentalDecorators -t 'es5' t.ts && node t.js
[ foo { method: [Function] },
'method',
{ value: [Function],
writable: true,
enumerable: true,
configurable: true } ]
С уважением.