Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用TypeScript泛型定义工厂方法的返回类型_Javascript_Typescript - Fatal编程技术网

Javascript 使用TypeScript泛型定义工厂方法的返回类型

Javascript 使用TypeScript泛型定义工厂方法的返回类型,javascript,typescript,Javascript,Typescript,本质上,我希望能够使用构造函数调用泛型TypeScript函数,并返回构造函数乘积类型的正确类型变量。请参见下面的代码示例。Final console.log有类型错误 class TestType { constructor( public someVal: number ) {} } type GenericConstructor = new (...args: any) => any; let map = new Map<GenericConstructor

本质上,我希望能够使用构造函数调用泛型TypeScript函数,并返回构造函数乘积类型的正确类型变量。请参见下面的代码示例。Final 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}`);
如果没有第二个类型参数,这是否可能?

InstanceType是您需要的:

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

正是我要找的!我知道它的某个地方一定有语言功能,谢谢。为了子孙后代。
function retrieve<T extends GenericConstructor>(constructor: T): InstanceType<T> {
  return map.get(constructor);
}