我有一个 user
模型类,看起来像这样:
{
firstName: string;
lastName: string;
someSwitch: boolean;
}
如果我声明一个用户,该类默认强制执行,并且在编译时会失败:
fooUser : User = {
firstName: string;
lastName: string;
}
会失败,因为它需要定义 someSwitch
(除非它在类中被标记为可选)
如果不独立测试每个字段,我如何在运行时强制执行此模型,因为这在运行时会很好地工作:
someJson = {
firstName: string;
lastName: string;
}
fooUser : User = someJson;
我能做的就是简单地为 User
创建一个构造函数,并在其中分配所有必需的内容,然后在我需要时创建对象,但是必须为一个简单的数据创建一个构造函数似乎很奇怪模型,也许我只是看得更远,这是正确的解决方案。
最佳答案
不幸的是,如果不测试所需的属性,就无法在 js 中执行此操作。您可以进行 typeof(x) 检查,但这只会对基本类型(对象、字符串、数字、 bool 值)有帮助。
编辑
经过进一步研究,我认为您实际上可以用 instanceof 做这样的事情运算符(operator)。
The instanceof operator tests the presence of constructor.prototype in object's prototype chain.
关于javascript - 在运行时强制执行类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52839222/