键入"数组 |布尔值不允许数组方法,因为它可能是布尔值



private myVehicles: IVehicle[] | boolean;

问题:当我从数据库收到车辆列表时,我想将它们设置为myVehicles,或者将它们单独推入myVehicles数组。TS错误,因为myVehicles可能是布尔值。"push"不是布尔属性是的,我知道…但是它是array…

的方法我可能可以去掉| boolean并重新编写逻辑,但我经常看到这种情况,似乎必须有一种绕过它的方法。

联合类型允许您仅使用两个术语之间的共同特征。BooleanArray唯一的共同特征是Object.prototype.valueOf。为了正确地使用这个变量,只需利用控制流分析并分别处理这两种情况:

interface IVehicle { }
declare const myVehicles: IVehicle[] | boolean;
if (typeof myVehicles === 'boolean') {
// Here you can handle the boolean case
} else {
// Here you can handle the IVehicle[] case
}

打印稿操场

最新更新