繁体   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