【发布时间】:2019-02-06 11:24:43
【问题描述】:
本质上,我希望能够使用构造函数调用通用 TypeScript 函数,并返回构造函数乘积类型的正确类型变量。请参阅下面的代码示例。最终的 console.log 有类型错误。
class TestType {
constructor(
public someVal: number
) {}
}
type GenericConstructor = new (...args: any) => any;
let map = new Map<GenericConstructor, any>();
map.set(TestType, new TestType(7));
console.log(map.get(TestType).someVal);
function retrieve<T extends GenericConstructor>(constructor: T): T {
return map.get(constructor);
}
let retrieved = retrieve(TestType);
console.log(`retrieved: ${retrieved.someVal}`);
我搜索了其他答案,但似乎没有什么能完全涵盖这一点。我也觉得这可能是不可能的,因为我试图一般地而不是从实例中提取类型。
至少我希望这个功能能够正常工作,并且输入正确:
let val: SomeType = retrieve(SomeTypeConstructor);
如果没有第二个类型参数,这可能吗?
【问题讨论】:
标签: javascript typescript