[英]A question in Type inference in conditional types
type CtorParamsType<T> = T extends {
new(...args: infer U);
} ? U : any;
class MyType {
constructor(name: string, age: number) {
}
}
type T1 = CtorParamsType<MyType> //any
type T2 = CtorParamsType<{ new(name: string, age: number); }> //[string, number]
在這個示例中,我預計 T1 和 T2 將具有相同的類型。為什么它們不同?
您正在尋找的類型已經存在,它被稱為ConstructorParameters
。
您的類型也可以,唯一的問題是MyType
是實例類型。 您需要 class 類型的構造函數參數,可以使用typeof MyType
訪問
class MyType {
constructor(name: string, age: number) {
}
}
type T1 = ConstructorParameters<typeof MyType> // [string, number]
type T2 = ConstructorParameters<{ new(name: string, age: number): any }> // [string, number]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.