[TS] Snippets
ENUM
假設我們的 enum 是這樣:
enum GENDER {
MALE = 'male',
FEMALE = 'female',
}
把 enum 的 values 變成 union type(values of enum to type )
Typescript: string literal union type from enum @ StackOverflow
在 Template Literal Types 出來之後,要把 enum 的 values 變成 union type 非常簡單:
// get type from values of enum
type valueAsUnion = `${GENDER}`; // "male" | "female"
把 enum 的 keys 變成 union type (keys of enum to type)
// get type from keys of enum
type keyAsUnion = keyof typeof GENDER; // "MALE" | "FEMALE"
之所以可以這樣使用,是因為 typeof GENDER
會是該 enum 的物件形式:
const gender: typeof GENDER = {
MALE: GENDER.MALE,
FEMALE: GENDER.FEMALE,
};
把 enum 的 values 變成 object key(values of enum to object key)
keywords: enum value as key
可以使用 Record
:
enum GENDER {
MALE = 'male',
FEMALE = 'female',
}
type Gender = Record<GENDER, string>;
// type Gender = {
// male: string;
// female: string;
// }