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