[英]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.