【发布时间】:2019-12-29 18:37:26
【问题描述】:
我正在尝试获取 typescript 类和函数的参数。
export type CtorArgs<TBase> = TBase extends new (...args: infer TArgs) => infer Impl ? TArgs : never;
export type AbsCtorArgs<TBase> = TBase extends {constructor: (...args: infer TArgs) => infer Impl} ? TArgs : never;
export type FuncArgs<TBase> = TBase extends (...args: infer TArgs) => infer Impl ? TArgs : never;
function RegularFunction(a:string,b:number){}
class RegularClass{
constructor(a:string,b:number){}
}
abstract class AbstractClass{
constructor(a:string,b:number){}
}
type thing = [
CtorArgs<typeof RegularClass>,
FuncArgs<typeof RegularFunction>,
AbsCtorArgs<typeof AbstractClass>,
CtorArgs<typeof AbstractClass>,
FuncArgs<typeof AbstractClass>
];
但由于某些原因,抽象类不返回其构造函数的参数。
我怀疑这是因为new 关键字isn't available on abstract classes。有人知道如何获取抽象类构造函数中实际存在的那些参数吗?
不,这不是关于实例化抽象类,而是关于从抽象类继承的类和该类的参数的依赖注入。 See here
【问题讨论】:
-
绝对不是重复的,我也想知道这个。这专门用于从抽象类中检索构造函数的参数。
标签: typescript arguments abstract-class type-inference typescript-generics