首页 新闻 会员 周边 捐助

typescript 如何实现 C# 那样的变量赋值 switch expression

0
悬赏园豆:30 [已解决问题] 解决于 2025-07-08 16:56

请问如何用 typescript 实现下面的同样效果的 C# switch 表达式

public class Program
{
    public static void Main()
    {
        int dayOfWeek = 2;
        string day = dayOfWeek switch
        {
            1 => "Monday",
            2 => "Tuesday",
            3 => "Wednesday",
            _ => "Another day"
        };
        
        Console.WriteLine(day);
    }
}
dudu的主页 dudu | 高人七级 | 园豆:24862
提问于:2025-07-08 15:47
< >
分享
最佳答案
0

采用了 How to assign a variable to switch statement result 这篇博文中的方法

const dayOfWeek: number = 2;

const day = (function () {
    switch (dayOfWeek) {
        case 1:
            return { one: 1 };
        case 2:
            return "Tuesday";
        case 3:
            return "Wednesday";
        default:
            return "Another day"
    }
})();

console.log(day);
dudu | 高人七级 |园豆:24862 | 2025-07-08 16:55

deepseek 给出的基于 Record 的一种实现

const FRUIT_COLORS: Record<Fruit, string> = {
  apple: "red",
  banana: "yellow",
  orange: "orange",
  grape: "purple"
};

const color = FRUIT_COLORS[fruit]; // Safer and more concise
dudu | 园豆:24862 (高人七级) | 2025-07-08 17:04
其他回答(1)
0

说个稍微跑题的,js或ts里用对象键值对直接取值也是比较常见的。
如果非要约束,那么可以考虑enum:

enum EWeekday {
    Monday = 1,
    Tuesday,
    Wednesday
    //...
}

type EWeekdayMap = {
    [k in EWeekday]?: string
}

const weekdayMap: EWeekdayMap = {
    [EWeekday.Monday]: "Monday",
    // ...
}

const getWeekdayExpression = (d: EWeekday, defaultValue = "???") => weekdayMap[d] || defaultValue

console.log(getWeekdayExpression(1))
收获园豆:30
彼时今日 | 园豆:690 (小虾三级) | 2025-07-08 16:39

实现场景中 "Monday" 是一个包含变量值的字符串拼接

支持(0) 反对(0) dudu | 园豆:24862 (高人七级) | 2025-07-08 16:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册