我有一个user
模型类,看起来像这样:
{
firstName: string;
lastName: string;
someSwitch: boolean;
}
如果我声明一个用户,则该类默认情况下是强制执行的,并且在编译时将失败:
fooUser : User = {
firstName: string;
lastName: string;
}
将失败,因为需要定义someSwitch
(除非在类中将其标记为可选)
如何在运行时强制遵守此模型,而无需独立测试每个字段,因为在运行时,它会很好地工作:
someJson = {
firstName: string;
lastName: string;
}
fooUser : User = someJson;
我能做的就是简单地为User
创建一个构造函数,并在其中分配所有必需的内容,然后在需要时创建Object,但是似乎很奇怪,必须为一个简单的数据模型创建一个构造函数,也许我只是在寻找远景,这是正确的解决方案。
答案 0 :(得分:1)
不幸的是,如果不测试必需的属性,就无法在js中执行此操作。您可以进行typeof(x)检查,但这仅对基本类型(对象,字符串,数字,布尔值)有用。
修改
经过进一步研究,我认为您实际上可以使用instanceof运算符执行类似的操作。
instanceof运算符测试对象的原型链中是否有builder.prototype。