TypeScript 项目开启装饰器
{
"compilerOptions": {
"target": "ES5",
"experimentalDecorators": true
}
}
按照装饰器的写法划分
function sealed(target) {
// do something with "target" ...
}
实际上是普通装饰器写法的柯里化处理
function color(value: string) { // 这是一个装饰器工厂
return function (target) { // 这是装饰器
// do something with "target" and "value"...
}
}
安装装饰器的放置方法划分
传入一个属性:constructor 构造函数
意味着可以改变类的构造器
function sealed(constructor: Function) {
Object.seal(constructor);
Object.seal(constructor.prototype);
}
@sealed
class Greeter {
greeting: string;
constructor(message: string) {
this.greeting = message;
}
greet() {
return "Hello, " + this.greeting;
}
}