繁体   English   中英

Typescript:获取枚举的值类型

[英]Typescript: Get value type of Enum

enum Test {A,B};
const x = { name:"Test", value:Test.B };
const y = typeof x.Value;

y 的值为“Number”,请问可以得到 Test of type 吗?

值 position 中的typeof是 javascript 运算符,而不是 typescript 运算符。 它总是在类型级别返回相同的字符串文字并集。

const test = typeof false
// "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"

看游乐场

但在运行时, a.value只是一个数字。

enum Test {A,B};
const a = { name: "Test", value: Test.B }
console.log(a.value) // 1

所以typeof a.value'number'因为typeof 1'number'

这意味着在运行时,您无法获得对您只有该枚举成员的枚举的引用。 该成员不对有关其来源的任何信息进行编码。


但这就是您的类型的用途。

您可以在类型声明中使用typeof来获取 Typescript 类型的任意值。 这是一个完全不同的运营商

enum Test {A,B};
const a = { name: "Test", value: Test.B }
type B = typeof a['value'] // Test

看游乐场


如果没有关于您目标的更多详细信息,我无法提供更具体的建议。

枚举在运行时是一个真正的 object ,这意味着它是定义为const的 object。

在这种情况下, Test 是一个数字枚举

typeof Test
{
   "0": "A",
   "1": "B",
   "A": 0,
   "B": 1
} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM