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

TypeScript如何约束属性与多类型属性保持类型一致

类型约束需求

数据结构中存在data、backupData两个属性,要求backupData的类型必须与data的实际类型完全一致。

初始写法的缺陷

最初采用联合类型直接定义两个属性的类型:

class ClassC{
   data: InterfaceA | InterfaceB
   backupData: InterfaceA | InterfaceB 
}

这种写法无法满足类型强一致要求:它仅限定两个属性的取值都在InterfaceA和InterfaceB的范围内,但允许data为InterfaceA、backupData为InterfaceB这类类型不匹配的情况存在,TS编译阶段不会抛出任何错误。
曾考虑过将backupData设为any类型绕过校验,但这种做法会完全丢失类型安全保障,不是合理的实现方案。

可行实现方案

通过泛型即可实现两个属性的类型强绑定,代码如下:

class ClassC<T>{
   data: T;
   backupData: T;
}
  • 泛型参数T会同时约束两个属性的类型,实例化类时传入具体类型后,两个属性会被强制要求类型完全一致
  • 该方案保留了完整的类型检查能力,不会出现any类型带来的类型提示丢失、校验失效问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:57:16