小编tsk*_*tsk的帖子

TypeScript:将对象放入变量时,类型保护不适用于 switch 语句

我不明白为什么类型保护在下面的例子中不起作用......

当我们有这些接口时,

interface ParamA {
    name: 'A';
    aaa: boolean;
}

interface ParamB {
    name: 'B';
    bbb: number;
}
Run Code Online (Sandbox Code Playgroud)

好的

function func(param: ParamA | ParamB) {
    switch (param.name) {
        case 'A':
            const aaa = param.aaa;
            console.log(aaa); // boolean
            break;
        case 'B':
            const bbb = param.bbb;
            console.log(bbb); // number
            break;
        default:
            break;
    }
}
Run Code Online (Sandbox Code Playgroud)

坏的

function func(param: ParamA | ParamB) {
    const name = param.name; // just rewrite here
    switch (name) {
        case 'A':
            const aaa = param.aaa;
            //                ^^^
            console.log(aaa);
            break; …
Run Code Online (Sandbox Code Playgroud)

typescript

5
推荐指数
2
解决办法
3945
查看次数

标签 统计

typescript ×1