在运行时强制类型

时间:2018-10-16 15:38:46

标签: javascript typescript casting variable-assignment

我有一个user模型类,看起来像这样:

{
   firstName: string;
   lastName: string;
   someSwitch: boolean;
}

如果我声明一个用户,则该类默认情况下是强制执行的,并且在编译时将失败:

fooUser : User = {
   firstName: string;
   lastName: string;
}

将失败,因为需要定义someSwitch(除非在类中将其标记为可选)

如何在运行时强制遵守此模型,而无需独立测试每个字段,因为在运行时,它会很好地工作:

someJson = {
   firstName: string;
   lastName: string;
}

fooUser : User = someJson;

我能做的就是简单地为User创建一个构造函数,并在其中分配所有必需的内容,然后在需要时创建Object,但是似乎很奇怪,必须为一个简单的数据模型创建一个构造函数,也许我只是在寻找远景,这是正确的解决方案。

1 个答案:

答案 0 :(得分:1)

不幸的是,如果不测试必需的属性,就无法在js中执行此操作。您可以进行typeof(x)检查,但这仅对基本类型(对象,字符串,数字,布尔值)有用。

修改

经过进一步研究,我认为您实际上可以使用instanceof运算符执行类似的操作。

  

instanceof运算符测试对象的原型链中是否有builder.prototype。