Javascript 如何改进检查每个TypeScript接口属性的if语句?
我有以下接口Javascript 如何改进检查每个TypeScript接口属性的if语句?,javascript,angular,typescript,Javascript,Angular,Typescript,我有以下接口 interface Ver { mi: string, ma: string, ha: string, rev: string } if(!ver || (!ver.mi && !ver.ma && !ver.ha && !ver.rev)) { return ''; } 我不想在以下情况下打印出来(其中ver是实现ver接口的对象) 问题是:如果语句测试(特别是(!ver.mi&&!ver.ma&&!ver.
interface Ver {
mi: string,
ma: string,
ha: string,
rev: string
}
if(!ver || (!ver.mi && !ver.ma && !ver.ha && !ver.rev)) {
return '';
}
我不想在以下情况下打印出来(其中ver
是实现ver
接口的对象)
问题是:如果
语句测试(特别是(!ver.mi&&!ver.ma&&!ver.ha&&!ver.rev)
部分,是否有更好的符合TypeScript的方法来缩短这个,您可以循环检查属性,并检查它们是否都是真实的
const hasAllValues=(obj:T)=>Object.values(obj.every)(value=>value);
如果(!ver | |!hasAllValues(ver)){
返回“”;
}
如果obj包含的密钥比版本中的多,则可能会导致问题。在这种情况下,您可以手动定义要检查的属性:
const props=['mi','ma','ha','rev'];
const hasAllProperties=(obj:T,props:P)=>props.every(prop=>obj[prop]);
如果(!ver | |!hasAllProperties(ver,props)){
返回“”;
}