如果<T>
是一个类/构造函数的类型,那么为什么我们需要将其扩展到这里的一个对象?以及我们正在扩展的对象是如何接收参数的?有人能解释一下Decorator函数中发生了什么吗
interface MapLocation {
lat: number;
long: number;
}
function AddLocation(lat: number, long: number) {
return <T extends { new (...args: any[]): {} }>(
classConstructor: T
) => {
return class extends classConstructor {
public mapLocation: MapLocation;
constructor(...args: any[]) {
super(...args);
this.mapLocation = { lat, long };
}
};
};
}
@AddLocation(1.234, 1.876)
class Person {
constructor(public name: string, public age: number) {}
}
1条答案
按热度按时间t98cgbkg1#
表示T应该是建构函式
它可以写得更简单
装饰器基本上是一个函数,它允许禁止在非构造器上运行
构造函数将其参数作为参数列表传递