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

如何在TypeScript中声明带约束泛型参数的类?求对应C#写法的等效实现

TypeScript中带类约束的泛型类写法

嘿,这个转换我熟!在TypeScript里实现和你那段C#代码等价的泛型约束,只需要把C#里的where T: BaseClass换成TypeScript的T extends BaseClass就可以了,语法更简洁直观。

先给你直接对应的代码示例:

// 先定义你的基类
class BaseClass {
  baseMethod() {
    console.log("来自BaseClass的方法");
  }
}

// 带泛型约束的类:T必须是BaseClass的子类
class NewClass<T extends BaseClass> {
  // 这里可以安全调用T的基类成员,因为约束保证了类型兼容性
  callBaseMethod(instance: T) {
    instance.baseMethod(); // 不会出现类型错误
  }
}

再给你个实际使用的例子,验证约束的作用:

// 定义一个继承自BaseClass的子类
class DerivedClass extends BaseClass {
  derivedMethod() {
    console.log("来自DerivedClass的方法");
  }
}

// 正常使用:符合约束,没有问题
const validInstance = new NewClass<DerivedClass>();
validInstance.callBaseMethod(new DerivedClass()); // 输出 "来自BaseClass的方法"

// 尝试违反约束:TypeScript会直接报错
class UnrelatedClass {}
// 下面这行代码会触发类型错误:类型'UnrelatedClass'不满足约束'BaseClass'
// const invalidInstance = new NewClass<UnrelatedClass>();

简单总结下:TypeScript里的泛型约束统一用extends关键字,不管是约束类还是接口都适用,和C#的where作用完全一致,只是语法上更紧凑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:43:42