确保部分在运行时已满

时间:2019-05-12 22:13:14

标签: typescript

我的函数使用参数if text in t[0],其类型为meOrPartial。在我的函数主体中,我需要检测它是否“已满”,是否可以在运行时执行此操作?

我尝试了此伪代码(IMe的密钥比这更多):

Partial<IMe> | IMe

这当然是行不通的,但是有没有办法在运行时执行此检查?

1 个答案:

答案 0 :(得分:2)

TypeScript接口不是运行时构件,因此,如果不定义某种包含要检查的所有键的对象,您将无能为力。

考虑到这一点,我会做这样的事情:

const MeTemplate: IMe = {
  id: '',
  isActive: false,
  ...
};

然后您的isFull函数将如下所示:

function isFull(obj) {
  return Object.keys(MeTemplate).every(prop => prop in obj);
}

需要两次定义IMe的键并不理想,但这可以通过为MeTemplate分配IMe类型来减轻。这样可以确保如果更改IMe的形状,则在更改MeTemplate之前,您将遇到编译器错误。