3.解释在TypeScript中的装饰器?如何启用对装饰器的实验支持?
时间: 2023-07-07 19:34:22 浏览: 49
装饰器是一种特殊类型的声明,它可以被附加到类声明、方法、属性或参数上,以修改类的行为。在TypeScript中,装饰器通过特殊语法`@expression`来使用,其中`expression`可以是一个函数调用或任何其他表达式。
例如,下面是一个用于装饰类的装饰器:
```typescript
function classDecorator<T extends {new(...args:any[]):{}}>(constructor:T) {
return class extends constructor {
newProperty = "new property";
hello = "override";
}
}
@classDecorator
class Greeter {
property = "property";
hello: string;
constructor(m: string) {
this.hello = m;
}
}
console.log(new Greeter("world"));
```
在上面的示例中,我们定义了一个名为`classDecorator`的装饰器函数,它接受一个类构造函数作为参数,并返回一个新的类构造函数。在这个新的构造函数中,我们添加了一个新属性`newProperty`和重写了`hello`属性。然后,我们使用`@classDecorator`装饰了`Greeter`类,这使得这个类通过`classDecorator`函数进行修改。
要启用TypeScript中的装饰器支持,需要在`tsconfig.json`文件中启用`experimentalDecorators`选项。例如:
```json
{
"compilerOptions": {
"target": "es5",
"experimentalDecorators": true
}
}
```
这个选项告诉TypeScript编译器启用实验性的装饰器特性。