首页 > 解决方案 > 如何将 switch case 转换为查找表

问题描述

我不确定如何使用键、值等将这个 switch case 转换为可能的查找表。

这是开关盒

getContactTypeTitle(contactTypeCode: string): string {
    let contactType = 'Site Contact';
    switch (contactTypeCode) {
        case 'SiteApp_CACFP_PrincipleDirector':
            contactType = 'Principle Director';
            break;

        case 'SiteApp_CACFP_PrincipleAsstDir':
            contactType = 'Principle Assistant Director';
            break;

        case 'SiteApp_CACFP_Cook':
            contactType = 'Cook';
            break;
    }

    return contactType;
}

标签: typescript

解决方案


地图查找很容易实现。

const contactTypeByCode = new Map([
    ['SiteApp_CACFP_PrincipleDirector', 'Principle Director'],
    ['SiteApp_CACFP_PrincipleAsstDir', 'Principle Assistant Director'],
    ['SiteApp_CACFP_Cook', 'Cook'],
]);
const getContactTypeTitle = (contactTypeCode: string) {
    return contactTypeByCode.get(contactTypeCode) || 'Site Contact';
};

您可能希望通过要求调用者传递已经在 Map 中的代码来增加类型安全性。

const contactTypeByCodeArr = [
    ['SiteApp_CACFP_PrincipleDirector', 'Principle Director'],
    ['SiteApp_CACFP_PrincipleAsstDir', 'Principle Assistant Director'],
    ['SiteApp_CACFP_Cook', 'Cook'],
] as const;
type ContactCode = typeof contactTypeByCodeArr[number][0];
const contactTypeByCode = new Map(contactTypeByCodeArr);
const getContactTypeTitle = (contactTypeCode: ContactCode) {
    return contactTypeByCode.get(contactTypeCode);
};

推荐阅读