簡體   English   中英

TypeScript對多個基本類型的通用約束

[英]TypeScript generic constraints to multiple primitive types

給定此功能:

myFunc(object: string | null): string | null {}

我想這個功能是返回類型的string時,對象是string ,返回類型string | null 對象為string | null類型時為string | null string | null

我努力了:

myFunc<T extends string | null>(object: T): T {
    return "returnValue"; //Type '"returnValue"' is not assignable to type 'T'.
}

myFunc<T extends string & null>(object: T): T {
    return "returnValue"; //Type '"returnValue"' is not assignable to type 'T'.
}

兩者都產生相同的編譯錯誤。 我沒有找到正確的語法來做到這一點。

我不敢相信我會真正建議重載,因為我花了很多時間解釋如何避免重載...但是重載將是建模的好方法!

class Example {
    myFunc(obj: string): string;
    myFunc(obj: string | null): string | null;
    myFunc(obj: string | null): string | null {
        return "returnValue";
    }
}

function test(a: string | null, b: string) {
    const example = new Example();

    // resultA: string | null
    const resultA = example.myFunc(a);

    // resultB: string
    const resultB = example.myFunc(b);
}

在上面的示例中,將返回類型映射到輸入類型,因此, 如果您在啟用了嚴格的null檢查的情況下運行,則 resultAresultB具有預期的類型。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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