Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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
Arrays 对象的类型脚本数组_Arrays_Typescript - Fatal编程技术网

Arrays 对象的类型脚本数组

Arrays 对象的类型脚本数组,arrays,typescript,Arrays,Typescript,我正在尝试使用对象数组,我想知道我的声明是否正确 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, "o

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

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)
}
公共异步列表(){
myObj1={
“姓名”:“约翰”,
“年龄”:“45”,
“汽车”:20,
“测试”:30,
“例子”:20
};
myObj2={
“姓名”:“约翰”,
“年龄”:“30岁”,
“汽车”:10,
“例子”:10
};
let选项卡:数组=[]
//找钥匙
keyObj1=Object.keys(myObj1);
keyObj2=Object.keys(myObj2);
//查找要迭代的最大长度
if(keyObj1.length>keyObj2.length){
var biggestKey=keyObj1;
}否则{
var biggestKey=keyObj2;
}
//现在比较它们的键和值
对于(var i=0;i
  • let选项卡:数组=[]
只是想知道这个声明是否正确?因为我试图在TypeScript中使用对象数组

谢谢您的帮助;)

阵列可以,但是:

  • 您可能不希望有一个名为
    new
    的属性(尽管这可能是一个过时的问题)。您可以拥有一个具有该名称的属性,只是在ES5之前,您不能使用关键字或保留字作为文字属性名(
    x.new
    在ES5之前无效,在ES5和更高版本中有效)。如果您将您的TypeScript编译为ES3,以便在非常旧的浏览器上使用,则必须在您编写的任何地方使用
    x[“new”]
    ,以便与ES5之前的属性标识符语法兼容

  • 不需要引号,只要
    Array
    就可以了

  • 我建议单独声明对象类型(例如,
    MyType
    ),然后使用
    MyType[]

  • 例如:

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

    let tab: MyType[] = [];
    
    数组
    可以,但是:

  • 您可能不希望有一个名为
    new
    的属性(尽管这可能是一个过时的问题)。您可以拥有一个具有该名称的属性,只是在ES5之前,您不能使用关键字或保留字作为文字属性名(
    x.new
    在ES5之前无效,在ES5和更高版本中有效)。如果您将您的TypeScript编译为ES3,以便在非常旧的浏览器上使用,则必须在您编写的任何地方使用
    x[“new”]
    ,以便与ES5之前的属性标识符语法兼容

  • 不需要引号,只要
    Array
    就可以了

  • 我建议单独声明对象类型(例如,
    MyType
    ),然后使用
    MyType[]

  • 例如:

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

    let tab: MyType[] = [];
    

    您的类型很好,但是,Typescript将对此进行投诉:
    myObj1[key]!=myObj2[key]
    ^^,因为您尚未为该类型定义。您的类型很好,但是,Typescript将对此进行投诉:
    myObj1[key]!=myObj2[key]
    ^^,因为您尚未为该类型定义。