在TypeScript中从枚举生成带后缀字符串的联合类型
解决枚举翻译键的TypeScript类型定义问题
你需要把类型定义改成精确匹配枚举值拼接_one和_other的格式,而不是宽泛的DayType | string。直接用模板字符串类型就能实现这个需求:
enum DayType { BusinessDay = 'BUSINESS_DAY', CalendarDay = 'CALENDAR_DAY' } // 生成枚举值+"_one"和+"_other"的联合类型 type DayTranslationKey = `${DayType}_one` | `${DayType}_other`; type SettingTranslations = { day_type: { [key in DayTranslationKey]: string; }; };
这样定义后,day_type的键就被严格限制为:
BUSINESS_DAY_oneBUSINESS_DAY_otherCALENDAR_DAY_oneCALENDAR_DAY_other
完全匹配你实际使用的翻译键格式,同时还能获得TypeScript的类型检查——如果键名写错(比如写成BUSINESS_DAY_single),编辑器会直接报错。
内容的提问来源于stack exchange,提问作者Carl Wirkus
相关产品推荐
相关产品推荐

