Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TypeScript动态对象迁移_Typescript - Fatal编程技术网

TypeScript动态对象迁移

TypeScript动态对象迁移,typescript,Typescript,我有遗留JS,我正在移植到TS 有许多创建对象的实例: var myObj = {key0: 'data0', key1: 'data1'} 然后在以后向该对象动态添加属性: myObj.key2 = 'data2' 但是TS抱怨“上不存在属性”key2“{ 解决这个问题的正确方法是什么?我能做到 (myObj as any).key2 但这显然违背了使用TS的目的 谢谢!或许可以使用索引签名: var myObj: {[key: string]: string} = {key0: 'd

我有遗留JS,我正在移植到TS

有许多创建对象的实例:

var myObj = {key0: 'data0', key1: 'data1'}
然后在以后向该对象动态添加属性:

myObj.key2 = 'data2'
但是TS抱怨“上不存在属性”key2“{

解决这个问题的正确方法是什么?我能做到

(myObj as any).key2 
但这显然违背了使用TS的目的


谢谢!

或许可以使用索引签名:

var myObj: {[key: string]: string} = {key0: 'data0', key1: 'data1'}

myObj.foo = "bar"; // okay
myObj["bar"] = "foo"; // okay

阅读有关索引签名的内容。

这取决于具体情况,但在这种情况下,您可能需要定义一种类型:

interface KeyedObj {
  key0: string,
  key1: string,
  key2?: string,
}

const myObj: KeyedObj = {key0: 'data0', key1: 'data1'};
myObj.key2 = 'data2';
您也可以简单地将
myObj
声明为
any

const myObj: any = ...
myObj.key2 = 'data2'; // no type issue here