我的函数使用参数if text in t[0]
,其类型为meOrPartial
。在我的函数主体中,我需要检测它是否“已满”,是否可以在运行时执行此操作?
我尝试了此伪代码(IMe的密钥比这更多):
Partial<IMe> | IMe
这当然是行不通的,但是有没有办法在运行时执行此检查?
答案 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
之前,您将遇到编译器错误。