【问题标题】:Mapping Typescript Enums by their keys without using a Map?在不使用 Map 的情况下通过键映射 Typescript 枚举?
【发布时间】:2019-12-04 20:24:32
【问题描述】:

有以下枚举实例:

export enum TopicCategories {
    GUIDES = 'Guides',
    TASKS = 'Tasks',
    CONCEPTS = 'Concepts',
    FORMULAS = 'Formulas',
    BLOGS = 'Blogs'
}

export enum TopicTypes {
    GUIDES = 'guide',
    TASK = 'task',
    CONCEPT = 'concept',
    FORMULA = 'formula',
    BLOG = 'blog'
}

export const topicCategoryToTopicTypeMap:Map<TopicCategories, TopicTypes> = new Map();

topicCategoryToTopicTypeMap.set(TopicCategories.BLOGS, TopicTypes.BLOG);

topicCategoryToTopicTypeMap:Map 实例将允许我使用 TopicCategory.BLOG 作为键值来获取 TopicType.BLOG

有没有办法只使用Enum 实例直接执行此操作。或者说是不是可以去掉Map实例,直接进行映射?

【问题讨论】:

    标签: javascript typescript enums


    【解决方案1】:
      const categoryToTopic = { "Guides" : "guide", /*...*/ };
    
      type TopicCategories = keyof typeof categoryToTopic;
      type TopicTypes = (typeof categoryToTopic)[TopicCategories];
    

    不完全是。枚举仅适用于原语,因此您不能直接在枚举上存储更多数据。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-13
      • 1970-01-01
      • 2013-08-12
      • 2020-07-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多