我知道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);
答案 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);