具有不正确子字段的对象的Typeguard验证



以下代码验证对象"放电",用于检查对象是否包含正确的子字段。

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)
);

}

最新更新