如何在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
相关产品推荐
相关产品推荐

