ts 枚举(enum) 中的类型操作技巧

12,536 阅读1分钟

本文简绍几种常用的ts枚举类型的操作技巧:

enum Status {
  SUCCESS = 'success',
  DANGER = 'danger',
  WARNING = 'warning',
}

1. 获取枚举的 key 类型

type StatusKey = keyof typeof Status; 
// 'SUCCESS' | 'DANGER' | 'WARNING'

const keyArr: StatusKey[] = ['SUCCESS', 'DANGER']; // passed

2. 获取枚举的 value 类型

type StatusVal = `${Status}`;
// 'success' | 'danger' | 'warning'

const valArr: StatusVal[] = ['success', 'danger', 'warning'];  // passed

3. 合并枚举类型

enum Wait {
  WAITING = 'waiting',
}

const merge = { ...Status, ...Wait };
type MergeStatus = typeof merge;

const s1 = MergeStatus.WAITING; // warning
const s2 = MergeStatus.SUCCESS; // success
const s3 = MergeStatus.DANGER; // danger
const s4 = MergeStatus.WARNING; // warning

4. 使用 Exclude 剔除枚举中的值

type ErrStatus = Exclude<Status, Status.SUCCESS>;

let a: ErrStatus = Status.DANGER; // passed
a = Status.WARNING;  // passed
a = Status.SUCCESS;  // error

希望可以帮到大家,谢谢支持。