可以使用只读的 object 来替代 enum 的作用: const Type = { Byte: 'y', Boolean: 'b' } as const; // <-- 关键技巧 1: as const type Type = typeof Type; // <-- 关键技巧 2: 用 typeof 关键字从 object 反向创建同名类型 interface Property { name: string; type: Type[keyof Type]; } const prop1: Property = { name: 'foo', type: 'y' // valid ✅ }; const prop2: Property = { name: 'foo', type: Type.Byte // valid ✅ }; 但我必须指出 type: 'y' 这样的用法是 anti-pattern. 使用 enum 的出发点就是为了强制程序员只从 enum 读取值,从而规避使用 string literal 来避免错误。
可以使用只读的 object 来替代 enum 的作用:
但我必须指出
type: 'y'
这样的用法是 anti-pattern. 使用 enum 的出发点就是为了强制程序员只从 enum 读取值,从而规避使用 string literal 来避免错误。