TypeScript动态对象迁移
我有遗留JS,我正在移植到TS 有许多创建对象的实例: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
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