簡體   English   中英

使用TypeScript泛型定義Factory方法的返回類型

[英]Defining return type of Factory method with TypeScript generics

本質上,我希望能夠使用構造函數來調用通用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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM