看了很多ts,类属性装饰器的用法都是错误的,研究半天找到了正确用法吗,分享一下
正确用法
1. 装饰器上传参
import ts from 'typescript'
function logged(value) {
return (target, {kind, name}) => {
return function (initialValue) {
console.log(value) //66
console.log(target) //undefined
console.log(kind) //field
console.log(name) //x
console.log(initialValue) //1
return value;
};
}
}
class C {
@logged(66) x = 1;
}
const newc = new C()
console.log(ts.version); // 5.4.5
console.log(newc.x); //66
结果
2.装饰器不传参
import ts from 'typescript'
function logged(target, {kind, name}) {
return function (initialValue) {
console.log(target) //undefined
console.log(kind) //field
console.log(name) //x
console.log(initialValue) //1
return 66;
};
}
class C {
@logged x = 1;
}
const newc = new C()
console.log(ts.version); // 5.4.5
console.log(newc.x); //66
结果
正确但不完整的参考
TypeScript 5.0 beta 发布:新版 ES 装饰器、泛型参数的常量修饰、枚举增强等