小编dar*_*phi的帖子

枚举上带有或表达式的 switch case 未按预期计算

我正在尝试打开枚举以便运行正确的代码。我制作了一个打字稿游乐场,展示了我想要实现的目标的一个小例子。

在提供的示例中,我试图理解为什么 Test1 不会打印“B”。我的期望是,当使用逻辑或时,它将尝试检查任一情况是否为真。不只是第一个。这可能是对一些基本原理的误解吗?Test2 有效,因为我明确说明了情况,但 Test1 将是一个更紧凑的版本。

enum EventType {
    A = "A",
    B = "B",
    C = "C",
}

function Test1(type: EventType) {
    switch(type) {
        case EventType.A || EventType.B:
            console.log("Test1", type);
            break;
        case EventType.C:
            console.log("Test1", type);
            break;

    }
}

function Test2(type: EventType) {
    switch(type) {
        case EventType.A:
        case EventType.B:
            console.log("Test2", type);
            break;
        case EventType.C:
            console.log("Test2", type);
            break;

    }
}

const e = EventType.B;
Test1(e); // Expect "B" to print but does not
Test2(e); // Expect "B" to print and …
Run Code Online (Sandbox Code Playgroud)

enums switch-statement logical-operators typescript

5
推荐指数
1
解决办法
3245
查看次数