You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现枚举与键类型联合不匹配时触发编译错误的函数?

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 03:42:04