在typescript中将类的类型作为参数传递

gab6jxml  于 2023-08-07  发布在  TypeScript
关注(0)|答案(1)|浏览(177)

是否可以创建一个将类型作为参数的函数?
我正在寻找的东西沿着java相当于

public <T> T getObject(String data, Class<T> type){
    return ObjectMapper.parseTo(data, type);
}

字符串
我试过typeof,但似乎找不到任何方法来指定“Any class”。我似乎找不到任何与JavasClass对象直接并行的对象,可以让您指定一个Class。
请注意,我不需要解决这个特定的问题,它只是为了说明:)

bq8i3lrv

bq8i3lrv1#

我不是JavaMaven,但在TypeScript中,你可以通过使用需要扩展{new (...args: any[]): any}之类的泛型来强制泛型类型成为一个类。本质上,这意味着作为参数传递给泛型方法的类型具有相应的构造函数。
当传递类作为泛型参数时,确保使用**typeof**关键字,因为它提供了有关构造函数定义类型的信息。

class Test {}

function getObject<T extends {new (...args: any[]): any}>(data: string, type: T): T {
  return {} as T;
}

getObject<typeof Test>("", Test);

字符串
TypeScriptPlayground

相关问题