我正在学习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){
}
}
答案 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
。