类型要匹配枚举类型,而不仅仅是单个值

问题描述 投票:0回答:1
enum X {
  A = 'x',
  B = 'y'
}

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

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

A.prop2 必须哪种类型才能使 X 且仅 X 可分配给它?

(仅X,我的意思是不使用任何和其他“技巧”)

typescript enums
1个回答
0
投票

为了确保只有枚举类型

X
可以分配给
A.prop2
,您可以使用
typeof
运算符来捕获枚举的类型。以下是如何定义
A
来实现此目的:

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

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

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

在这种情况下,

A.prop2
被定义为
typeof X
,这确保只有
X
枚举可以分配给它。这样,您就不需要求助于使用
any
或其他解决方法。

© www.soinside.com 2019 - 2024. All rights reserved.