如何声明对象数组

时间:2019-10-02 20:54:06

标签: angular typescript

我正在学习Angular和Typescript,我一直在做一些小的编码,但是我到了屋顶,在任何地方都找不到解决我问题的方法。

我能够成功声明简单类型和简单类型数组,但是无法创建对象数组。

someArray = new Array<ObjectType>();
class ObjectType {
    constructor( name: string, age: number) {
    }
}

然后我尝试将元素添加到数组

someArray.push(new ObjectType('John',5) ); 

并得到一个错误:

  

重复标识符'someArray'.ts(2300)
  后续的属性声明必须具有相同的类型。属性“ someArray”必须为“ ObjectType []”类型,但此处为“ any”类型。ts(2717)
  app.component.ts(10,3):“ someArray”也在这里声明。

这怎么可能是重复的?预先谢谢你。


import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {

  someArray = new Array<ObjectType>();
  someArray.push(new ObjectType('John',5) );
}

class ObjectType{
    constructor( name: string, age: number){
    }
}

1 个答案:

答案 0 :(得分:2)

您的语法不正确。在类型(类)的直接主体中,您可以定义包含类型/字段/方法。在构造函数/方法的主体中,您可以编写要执行的过程代码。在有角度的组件中,建议您始终实现接口OnInit,然后在组件加载时在其中编写希望执行的代码。 ngOnInit在模板加载之前执行。

import { Component, OnInit } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {

  someArray = new Array<ObjectType>();

  ngOnInit() {
    this.someArray.push(new ObjectType('John',5) );
  }
}

另外,您可能希望在正在创建的实例上设置构造函数中的args。通过将这些参数标记为public或private来实现此目的的一种方法,具体取决于要提供字段的范围。

class ObjectType{
    constructor(public name: string, public age: number) {
    }
}

如果您不想在设置值后更改其值,也可以添加readonly