这个时候会提示错误,两者不能充分重叠,这意味要想断言成功,还必须具备有一个条件:
即:要使得A能够被断言为B,只需要A兼容B或B兼容A即可
四、双重断言(不建议使用)
”任何类型都可以被断言为any , any 可以被断言为任何类型
那么我们是不是可以使用双重断言 xxx as any as xxx 将任何一个类型断言为任何另一个类型呢?
interface People {
run(): void;
}
interface Fish {
swim(): void;
}
const isPeople = (mySelf: People) => {
return (mySelf as any as Fish);
}
在上面的例子中,若直接使用mySelf as Fish肯定会报错,因为mySelf 和Fish 互相都不兼容。
若使用双重断言,则可以打破「要使得A能够被断言为B,只需要A兼容B或B兼容A即可」的限制,将任何一个类型断言为任何另一个类型到若你使用了这种双重断言,那么十有八九是非常错误的,它很可能会导致运行时错误。