簡體   English   中英

條件類型中的類型推斷中的一個問題

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM