<T extend { new(...args: any[]): {} }>(constructor:T) 在打字稿中是什么意思?



每个打字稿装饰器都需要定义这个?这是什么意思?为什么不在打字稿语言中设置此默认值,否则开发人员每次都需要编写此默认值。

function classDecorator<T extends {new(...args:any[]):{}}>(constructor:T) {}

装饰器需要包含构造函数的对象作为参数。此对象可以实例化不同的类,这就是您必须使用泛型函数的原因。这就是为什么你需要一个看起来像这样的函数function classDecorator<T>(constructor:T) {}其中 T 被类或类型替换。例如,您可以像这样调用函数:classDecorator<MyClass>(myClass)(在此处查看有关泛型的更多信息:https://www.typescriptlang.org/docs/handbook/generics.html(。

为了限制类装饰器可以使用的类型类,请在扩展后指定它:extends {new(...args:any[]):{}。你基本上是说你的类需要通过这个(new...(在其定义中有一个构造函数。

据我所知,它没有被设置为默认模板,仅仅是因为装饰器模式没有在打字稿定义中以及许多其他现有模式中明确定义。

最新更新