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

TypeScript:如何为A.prop2指定仅允许枚举X本身赋值的类型?

TypeScript枚举对象类型赋值问题解答

问题描述

现有如下TypeScript代码:

enum X {
  A = 'x',
  B = 'y'
}

type A<T> = {
  prop1: T
  prop2: ?
}

let r:A<X> = {
  prop1: X.A,
  prop2: X
}

需要为A.prop2指定什么类型,才能仅允许枚举X本身赋值给它?(要求不使用any等取巧方式)

解决方案

将prop2的类型指定为typeof X即可,修改后的完整代码如下:

enum X {
  A = 'x',
  B = 'y'
}

type A<T> = {
  prop1: T
  prop2: typeof X
}

let r:A<X> = {
  prop1: X.A,
  prop2: X // 类型匹配,无报错
}

原理说明

在TypeScript中:

  • X代表枚举成员的联合类型(此处为X.A | X.B),对应枚举成员的值类型;
  • typeof X代表枚举对象本身的类型,描述了包含所有枚举成员的那个对象的结构。

通过将prop2的类型设为typeof X,就严格限定了它只能接收X这个枚举对象,而非枚举成员的值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 02:02:11