在TypeScript泛型方法中将变量转换为T?

时间:2017-07-18 06:10:53

标签: typescript type-conversion

我有以下typescript课程,以便从localStorage

获取模型
export class LocalStorageHelper {
    public static GetItemValue<T>(key: string): T {
        let value: string = localStorage.getItem(key);
        // if(typeof T == 'string') return value;
        // return (Convert JSON.parse(value) To T)
    }
}

如何在TypeScript中执行类似注释行的操作?

1 个答案:

答案 0 :(得分:1)

TypeScript get编译为JS,因此在运行时没有类型,因此您无法在此处执行typeof T之类的操作。您需要以某种方式传递要返回的对象的类型。在你的情况下,我将有两个单独的方法,一个用于检索字符串,另一个用于将其解析为JSON。

export class LocalStorageHelper {
    public static GetItemValueString(key: string): string {
        let value: string = localStorage.getItem(key);
        return value;
    }
    public static GetItemValue<T>(key: string): T {
        let value: string = localStorage.getItem(key);
        return JSON.parse(value) as T;
    }
}

我还要注意,即使在强类型语言(如Java / Scala / C#)中,编译器也无法告诉您是否需要返回字符串或其他对象,因为T只是返回类型您正在使用它来确定要返回的内容。