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

如何在TypeScript中使用枚举的小写形式作为索引键类型

问题:基于枚举值小写形式定义对象类型键

我有如下枚举:

export enum NameSet {
  Taxi = 'Taxi ',
  Bus = 'Bus',
  Empty = '',
}

我希望定义一个对象类型,使其键基于NameSet枚举的小写形式,尝试了如下写法:

type ITraffic = {
    [K in NameSet.toLowerCase()]?: string
}

但这种写法不正确,请问是否可以实现该需求?


解决方案

可以实现,借助TypeScript的模板字面量类型和映射类型就能搞定:

  1. 先通过内置的Lowercase<T>类型把枚举值转为小写形式:
type LowercaseNameSet = Lowercase<NameSet>;
  1. 再用映射类型遍历这个小写后的类型,生成目标对象类型:
type ITraffic = {
    [K in LowercaseNameSet]?: string;
};

注意事项

  • 你的NameSet.Taxi值末尾带空格,转小写后会保留这个空格,对应键为'taxi '(带空格);
  • NameSet.Empty转小写后是空字符串,会生成一个空字符串的可选键,若不需要这个键,可以用Exclude<T, U>过滤掉:
type NonEmptyLowercaseNameSet = Exclude<Lowercase<NameSet>, "">;
type ITraffic = {
    [K in NonEmptyLowercaseNameSet]?: string;
};

此时ITraffic的可选键就只有'taxi '和'bus'了。


内容的提问来源于stack exchange,提问作者user21357723

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 23:22:02