typescript - 如何将 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;
}
解决方案
地图查找很容易实现。
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);
};
推荐阅读
- c++ - 卡萨布兰卡 test_runner 因 std::bad_alloc 而失败
- java - 在 Android 项目中添加 API 27 支持会产生错误
- node.js - 回调返回值不会存储在 HTTP 请求(NodeJS)中
- python - 我将如何将纪元时间戳转换为一天中的小时?
- php - 将变量传递到另一个页面
- c# - 使用 xamarin android 在布局之间切换
- python - unix脚本的增强
- unity3d - 如何正确使用播放器滑动长度(以像素为单位)来移动 Unity 中的 UI 元素?
- sql - Oracle SQL 窗口优化/可能的 Oracle PL/SQL 解决方案?
- fonts - 拒绝加载字体 '
' 因为它违反了以下内容安全策略指令:“font-src *”