今天早些時候,我的應用程式遇到了一個問題,當時我試圖根據列舉中是否存在值來有條件地渲染元素。這是簡化的代碼:
enum Enum {
'id',
'name',
'age'
}
['id', 'name', 'age'].forEach((val) => {
console.log('in enum: ', !!Enum[val])
})
這列印,
"in enum: ", false
"in enum: ", true
"in enum: ", true
我最終做了類似的事情,
. . .
if (!!Enum[val] && val === 'id') {
// code
}
. . .
我錯過了什么嗎?列舉是id某種保留值嗎?
uj5u.com熱心網友回復:
通過這樣做!!Enum[val],您正在測驗列舉值而不是列舉鍵:
console.log(!!0) //prints false
console.log(!!1) //prints true
console.log(!!2) //prints true
您的代碼應如下所示:
['id', 'name', 'age'].forEach((val: any) => {
console.log('in enum: ', (val in Enum))
})
uj5u.com熱心網友回復:
id, name, age它不是values。是KEYS為了default valuses。示例:enum Enum { 'id = 0','name = 1', 'age = 2' }- 它是默認值。You by KEY 要求一個VALUE
例如:
enum Enum {
'id' = 'a',
'name' = 'b',
'age' = 'c'
}
['id', 'name', 'age'].forEach((val: any) => {
console.log('in enum: ', Enum[val])
})
// result -> a, b, c
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/476039.html
標籤:打字稿
