检查对象是否为Typescript中通用类型的类型

时间:2019-09-26 20:50:55

标签: typescript

我知道TypeScript可以作为可转换为Javascript的静态类型检查器。

因此,如果我要执行以下操作,是否有任何解决方法?

const resolve = <T>(map): T => {
    for (const value of map) {
        if (value instanceof T) {
            return <T> value;
        }
    }

    return null;
};

const map = [new A(), new B()];
const a = resolve<A>(map);
const b = resolve<B>(map);

1 个答案:

答案 0 :(得分:0)

如果您需要基于类执行运行时检查,则需要将其作为函数的参数传递给它,仅设置类型参数将不会执行,因为在编译过程中会被删除:

const resolve = <T>(map: any[], ctor: new (...a: any) => T): T | null => {
    for (const value of map) {
        if (value instanceof T) {
            return <T> value;
        }
    }
    return null;
}
class A{}
class B{}

const map = [new A(), new B()];
const a = resolve(map, A);
const b = resolve(map, B);

Play