You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript中如何将类的类型作为函数参数传递?

在TypeScript中实现类似Java的泛型类型参数函数

要实现你说的类似Java中接收Class<T>作为参数的泛型函数,TypeScript里可以用构造函数类型来替代Java的Class<T>,这是最接近的实现方式。

核心实现示例

对应你给出的Java代码,TypeScript的写法大概是这样:

// 先定义一个通用的构造函数类型,方便复用
type Constructor<T> = new (...args: any[]) => T;

function getObject<T>(data: string, type: Constructor<T>): T {
  // 这里模拟ObjectMapper.parseTo的逻辑,实际根据你的解析库调整
  const instance = new type();
  // 假设把data解析到实例上,比如用JSON.parse后赋值
  Object.assign(instance, JSON.parse(data));
  return instance;
}

调用方式(和Java传Class对象的逻辑一致)

比如你有一个类:

class User {
  name!: string;
  age!: number;
}

调用getObject的时候直接传类本身就行,就像Java里传User.class:

const user = getObject('{"name":"张三","age":25}', User);
// user的类型会被自动推断为User

关于typeof的说明

你提到尝试过typeof,其实typeof在这里是用来获取类的构造函数类型的——比如typeof User就是Constructor<User>,所以上面调用时传入的User本身,其类型就是typeof User,也就是我们定义的Constructor<User>,直接传类就等价于传入了它的构造函数类型。

和Java的区别

TypeScript是结构类型系统,没有Java那种名义上的Class对象,但构造函数类型Constructor<T>完全能满足“传入一个类,返回该类实例”的需求,逻辑上和Java的Class<T>作用一致。

内容的提问来源于stack exchange,提问作者Martin Nielsen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 13:34:56