我不明白为什么类型保护在下面的例子中不起作用......
当我们有这些接口时,
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 ×1