gpt4 book ai didi

javascript - 使用 TypeScript 泛型定义 Factory 方法的返回类型

转载 作者:行者123 更新时间:2023-12-03 00:15:27 25 4
gpt4 key购买 nike

本质上,我希望能够使用构造函数调用泛型 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);

如果没有第二个类型参数,这可能吗?

最佳答案

InstanceType<T>是您所需要的:

function retrieve<T extends GenericConstructor>(constructor: T): InstanceType<T> {
return map.get(constructor);
}

关于javascript - 使用 TypeScript 泛型定义 Factory 方法的返回类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54545939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com