簡體   English   中英

獲取typescript泛型類型作為字符串值

[英]Get typescript generic type as string value

我正在嘗試獲取泛型函數中給出的類型的名稱類型。

這適用於nodeJS應用。

我想做這樣的事情:

static Get<T>(): string {
        return typeof T;
    }

但是這個例子的結果是一個錯誤:“'T'只引用一個類型,但在這里被用作一個值。”

如果我打電話,我想要“字符串”作為結果:

let strType: string = Get<string>();

由於泛型在運行時不可用,因此無法在其上調用typeof 但是你可以這樣做

function Get<T>(type: T): string {
        return typeof type;
    }

let strType: string = Get<number>(1);
strType: string = Get<string>("1");

您可以從TS手冊中調整此類型:


type TypeName<T> =
    T extends string ? "string" :
    T extends number ? "number" :
    T extends boolean ? "boolean" :
    T extends undefined ? "undefined" :
    "object";

class Foo {

    static Get<T>(value: T): TypeName<T> {
        return typeof value;
    }
}

Foo.Get(123) // "number"
Foo.Get("str") // "string"

暫無
暫無

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

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