javascript - 在 TypeScript 中向 JavaScript 对象添加数据

标签 javascript json typescript

所以在普通的 Javascript 中你可以很好地执行这段代码:

var myObj = {};
myObj['one'] = {};

console.log(myObj);
console.log(myObj.one);

但是你在 TypeScript 中得到这个错误 Property 'one' does not exist on type '{}'

这只是设计使然吗? (例如,我应该为此开设自己的类(class))

最佳答案

damitij07's answer涵盖了很多处理这个问题的方法,但我想指出我最喜欢的这种用例:interfaces .

interface myObj {
  one:any;
}

现在您可以将变量标记为接口(interface),Typescript 将进行检查以确保对象符合要求。像类之类的任何其他东西一样传递它,它会在编译时消失。 js引擎没有额外的工作,只是编译时检查。

const myObjInstance:myObj = {one:0};
function foo(x:myObj):myObj { return x; }

如果您需要该字段是可选的,

interface myObj {
  one?:any;
}

现在,如果您不分配给该字段,Typescript 将不会提示。

最后请注意,这一切都假设您相信该对象是您期望的那样。如果您从外部获取它,即使您拥有它,您也应该在运行时检查结构是否符合您的预期以避免错误。

关于javascript - 在 TypeScript 中向 JavaScript 对象添加数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37899872/

相关文章:

javascript - 强制门户和 HTTPS 重定向

javascript - 基于java脚本变量动态改变html的header标签

javascript - 使用jquery在多个html文件中搜索字符串

javascript - 使用 jQuery 读取 JSON 对象

typescript - 使用变量的类型作为另一个 typescript 的类型

typescript - 使用自己的 Typescript 类型时,默认值不是构造函数

Javascript 原型(prototype)和实例创建

c# - C# SSIS 中的 JSON 序列化

java - 在 java 中使用 JSON-Simple 替换值

javascript - Typescript:根据接口(interface)键获取接口(interface)属性的类型