以下代码验证对象"放电",用于检查对象是否包含正确的子字段。
interface DischargeEntry {
date: string;
criteria: string;
}
const isDischargeEntry = (discharge:unknown): discharge is DischargeEntry => {
return (
(((discharge as DischargeEntry).date) !== undefined) ||
(((discharge as DischargeEntry).criteria) !== undefined)
);
}
const incorrectDischarge:unknown = {
criteria: "Thumb has healed."
};
console.log('isDischargeEntry:', isDischargeEntry(incorrectDischarge)) // = true (but should be false)
游乐场
return中的布尔条件有问题吗?或者关键字"as"正在改变逻辑?
如果两个属性都是必需的,则需要使用&&
组合条件以创建逻辑AND。
const isDischargeEntry = (discharge:unknown): discharge is DischargeEntry => {
return (
(((discharge as DischargeEntry).date) !== undefined)
&&
(((discharge as DischargeEntry).criteria) !== undefined)
);
}