1、转换为字面量的联合类型
1.1、数字枚举
enum Test1 { red, green, yellow, } type KeyTest1 = keyof typeof Test1 // "red" | "green" | "yellow" type ValTest1 = `${Test1}` // "0" | "1" | "2" type StrToNum<Str> = Str extends `${infer Num extends number}` ? Num : Str type NumValTest1 = StrToNum<`${Test1}`> // 0 | 1 | 2
1.2、字符串枚举
enum Test2 { red = '红', green = '绿', yellow = '黄', } type KeyTest2 = keyof typeof Test2 // "red" | "green" | "yellow" type ValTest2 = `${Test2}` // "红" | "绿" | "黄"
2、获取枚举的键数组
TypeScript 中的枚举是真实的对象,存在于运行时,因此我们可以使用Object.keys
方法来获取枚举的键数组。
2.1、数字枚举
console.log(Object.keys(Test1)) // ['0', '1', '2', 'red', 'green', 'yellow'] // 数字枚举的输出包括值,因此我们必须使用filter方法从数组中过滤掉任何不需要的值。 const arrKeyTest1 = Object.keys(Test1).filter((v) => isNaN(Number(v))) console.log(arrKeyTest1) // ['red', 'green', 'yellow']
2.2、字符串枚举
console.log(Object.keys(Test2)) // ['red', 'green', 'yellow']
3、获取枚举的键值数组
我们可以使用Object.values
方法来获取枚举的键值数组。
3.1、数字枚举
console.log(Object.values(Test1)) // ['red', 'green', 'yellow', 0, 1, 2] // 数字枚举的输出包括键,因此我们必须使用filter方法从数组中过滤掉任何不需要的值。 const arrValTest1 = Object.values(Test1).filter((v) => !isNaN(Number(v))) console.log(arrValTest1) // [0, 1, 2]
3.2、字符串枚举
console.log(Object.values(Test2)) // ['红', '绿', '黄']
有朋自远方来...评论一下呗O(∩_∩)O