所以在普通的 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/