[英]How to create a union type from Enum values in TypeScript?
我有以下枚舉,(可能是 const 或不是)我想派生一個聯合類型,類似於我硬編碼為MyNewOne
的內容。 如何使用最新的 TS?
const enum FieldId {
Code = 'code',
Title = 'title',
Statuses = 'statuses',
}
type MyNewOne = 'code' | 'title' | 'statuses'
我想說的第一點是。 你確定這是你想要的嗎? 枚舉的全部意義在於使用枚舉成員而不是使用字符串。 您甚至不能將原始字符串分配給枚舉成員,即使它的類型可證明是成員之一:
const enum FieldId {
Code = 'code',
Title = 'title',
Statuses = 'statuses',
}
let enumValue:FieldId = 'code'; // error
另外我想指出, FieldId
類型已經是一個聯合,即枚舉成員的聯合。 所以type FieldId = FieldId.Code | FieldId.Title | FieldId.Statuses
type FieldId = FieldId.Code | FieldId.Title | FieldId.Statuses
type FieldId = FieldId.Code | FieldId.Title | FieldId.Statuses
(例如,如果您將它與Exclude
一起使用並嘗試排除一個成員ex ,則會出現這種情況)
話雖如此,我們可以通過將枚舉插入模板文字類型中來欺騙編譯器將枚舉轉換為字符串:
const enum FieldId {
Code = 'code',
Title = 'title',
Statuses = 'statuses',
}
type FieldIdValue = `${FieldId}` // "code" | "title" | "statuses"
let v:FieldIdValue = "code"
let vBad: FieldIdValue = "" //err
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.