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

TypeScript类型`type Address<T extends string> = number & { type: T }`能否存储number与类型T?

解析TypeScript泛型类型Address<T extends string>

类型定义含义

type Address<T extends string> = number & { type: T } 是一个带泛型约束的交叉类型定义:

  • 泛型T被限制为string类型或其子类型,只有字符串类的值能作为T的实际类型传入;
  • number & { type: T } 是交叉类型,表示这个类型的取值必须同时满足两个条件:既是number类型,又是一个拥有type属性(属性值类型为T)的对象。

关于存储值的问题

这种交叉类型在TypeScript中属于不可能有合法实例的类型,原因很简单:JavaScript里的原始类型number是基本值,不是对象,无法拥有自定义的type属性(即便通过包装对象生成类似new Number(123)的实例,它也不属于number原始类型,而是Number对象类型,和定义里的number不匹配)。

所以结论是:

  • 不能存储普通的number类型值,因为它们缺少要求的type属性;
  • 更不能单独存储泛型T类型的字符串值,因为T类型值完全不符合“既是number又是带type属性的对象”的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 22:45:11