对象的打字稿数组

安全

我正在尝试使用对象数组,并且想知道我的声明是否正确?

public async list(){
myObj1 = {
"name": "John",
"age": "45",
"car": 20,
"test": 30,
"example": 20
};
myObj2 = {
"name": "John",
"age": "30",
"car": 10,
"example": 10
};

let tab: Array<{"project": string, "new": string, "old": string}> = []

// find keys
keyObj1 = Object.keys(myObj1);
keyObj2 = Object.keys(myObj2);

// find max length to iterate   
if (keyObj1.length > keyObj2.length) {
  var biggestKey = keyObj1;
} else {
  var biggestKey = keyObj2;
}

// now compare their keys and values 
for (var i = 0; i < biggestKey.length; i++) {
 var key = biggestKey[i];
 if (myObj1[key] != myObj2[key]) {
   tab.push({
     "project": key,
     "new": myObj1[key],
     "old": myObj2[key]
 })
}

//console.log(tab)
}
  • let选项卡:Array <{“ project”:字符串,“ new”:字符串,“ old”:字符串}> = []

只想知道这个声明是否好?因为我试图在TypeScript中使用对象数组

谢谢你的帮助 ;)

TJ人群

Array<{"project": string, "new": string, "old": string}> 很好,但是:

  1. 您可能不希望拥有一个称为的属性new(尽管此时它可能已过时)。可以拥有一个具有该名称的属性,就在ES5之前,您不能使用关键字或保留字作为文字属性名称(x.new在ES5之前无效,在ES5及更高版本中有效)。如果将TypeScript编译为ES3以在真正的旧版浏览器上使用,则必须x["new"]在您编写的所有地方都使用它x.new,以便与ES5之前的属性标识符语法兼容。

  2. 不需要引号,就Array<{project: string, new: string, old: string}>可以了。

  3. 我建议分别声明您的对象类型(MyType例如),然后使用MyType[]代替。

因此,例如:

interface MyType {
  project: string,
  new: string, // Or possibly change this
  old: string
}

接着:

let tab: MyType[] = [];

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章