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

TypeScript如何基于变量值创建自定义类型?

解决方法

要实现你想要的效果,核心是区分TypeScript中值和类型的边界:你不能直接在类型定义里使用值变量n1,但可以通过typeof操作符获取它的类型。另外需要调整n1的声明方式,让TypeScript保留它的字面量类型:

  • 将n1从let改为const声明:let声明的变量会被TypeScript推断为宽泛的number类型,而const声明的字面量值会被推断为具体的字面量类型(比如这里的40)。
  • 在Numbers_2中使用typeof n1代替直接写n1:typeof操作符在类型层面可以获取值的类型,这样就能把n1对应的字面量类型加入联合类型中。

修正后的代码:

const n1 = 40; // 用const保留字面量类型
type Numbers_1 = 10 | 20 | 30 | 40;
type Numbers_2 = 10 | 20 | 30 | typeof n1; // 现在等价于Numbers_1
let n2: Numbers_2 = 1230; // 这行会正确报错:Type '1230' is not assignable to type 'Numbers_2'

这样Numbers_2就和Numbers_1功能完全一致,既能接受指定的几个数字,也包含n1对应的40,同时给n2赋值1230时会触发类型错误,符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 20:32:36