function classDecorator<T extends {new(...args:any[]):{}}>(constructor:T) {
return class extends constructor {
newProperty = "new property";
hello = "override";
}
}
<T extends {new(...args:any[]):{}}>(constructor:T)
这句语法好奇怪,可以解释下吗?
class extends constructor
这又是什么?class extends?
我在看 typescript 装饰器的时候也看到这个例子,这个函数的作用 是说 重载构造函数(真是高端...)
extends 是关键字, 这个关键字可以实现泛型约束。
{new(...args:any[]):{}} 是用来描述约束条件的。
new (...args: any[]) 是 a mixin constructor type, mixin constructor type 是 TypeScript 2.2 新增
new (...args: any[]) 表示 传入的类型是 mixin constructor type
:{} 表示 这个 a mixin constructor type 返回值类型 是 对象