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)){
返回“”;
}