Подпись для декоратора класса (как вы можете найти в lib.d.ts) должна быть следующей:
declare type ClassDecorator = <TFunction extends Function>(target: TFunction) => TFunction | void;
Таким образом, у вашего декоратора класса не может быть параметров field
и desc
(или они должны быть необязательными, если вы планируете использовать декоратор также в качестве декоратора поля)
const fdec = function (target: any) {
console.log('target 0 :', target);
target.bar = 3;
return target;
};
const fdec2 = function () {
console.log('target 1:');
return function (target: any) {
console.log('target 2:', target);
target.bar = 3;
return target;
}
};
@fdec
@fdec2()
class Foo {
static bar: number
}
console.log(Foo.bar);
console.log(new Foo());