javascript - 在运行时强制执行类型

标签 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 创建一个构造函数,并在其中分配所有必需的内容,然后在我需要时创建对象,但是必须为一个简单的数据创建一个构造函数似乎很奇怪模型,也许我只是看得更远,这是正确的解决方案。

最佳答案

不幸的是,如果不测试所需的属性,就无法在 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/

相关文章:

javascript - setinterval() 函数需要重新设置

javascript - 如何使用 Javascript/jQuery 设置下拉菜单的选项?

java - 将对象转换为泛型(或将内部类变量存储为泛型)

c - 在 C 中始终强制转换变量是一个好习惯吗?

javascript - 基于关系子对象获取对象 - 解析服务器

javascript - 将数组从node.js/express传递到jade模板

javascript - 为什么tsconfig需要编译Javascript文件Angular

javascript - c# 从 Angular 发送 3 个参数到 c#mvc,我在服务器端得到 null

javascript - 如何在 .vue 文件的 <script> 部分的父组件中处理通过 this.$emit 发出的自定义子事件?

java - 如何将 ArrayList 计数写入 LogCat?