簡體   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