如何实现枚举与键类型联合不匹配时触发编译错误的函数?
TypeScript 枚举与联合类型一致性校验及Serde实现需求
场景源于多库交互限制,以下是精准复现的类型示例:
enum EnumFromSource1 { KEY1 = 'KEY1', KEY2 = 'KEY2', KEY3 = 'KEY3', } type EnumKeysUnionFromSource2 = 'KEY1' | 'KEY2' | 'KEY3';
注:可假设枚举的键与值始终相等,定义格式为KEY = 'KEY'。
上述枚举类型与字符串联合类型本该完全一致,但多库交互中可能出现成员不匹配的情况(某方多/少成员)。需实现函数(如theyShouldMatch或enumSerde),要求调用时传入枚举与目标联合类型,当二者成员不匹配时触发编译错误,且以EnumKeysUnionFromSource2这类联合类型为校验基准。
补充enumSerde函数的实现需求:
type Serde<T> = { serialize: (v: T) => string; deserialize: (v: string) => T; }; function enumSerde<???>( e: Enum, ): Serde<Enum[keyof Enum]> { return { serialize: (x: Enum[keyof Enum]): string => x.toString(), deserialize: (x: string) => e[x as keyof Enum], }; }
要求当调用该函数传入的枚举与目标联合类型不匹配(比如枚举包含多余成员)时,直接触发编译报错。
内容的提问来源于stack exchange,提问作者A Question Asker
相关产品推荐
相关产品推荐

