我的Angular 4项目中的TypeScript语法有问题。 如果我创建一个普通的类,例如:
export class MyClass {
field1: string;
field2: number;
field3: boolean;
myMethod() {
this.field2 = this.field2 + 2;
}
}
我无法使用以下语法声明MyClass元素数组:
myclassarray: MyClass[] = [{
field1: 'hello',
field2: 3,
field3: false
}];
因为在我的类中有一个实例方法而不是静态方法。 问题是:如何声明一个元素数组,其中还包含对我有用的非静态方法?
我也不理解允许您以声明方式初始化这些项的语法。
答案 0 :(得分:3)
您可以使用Object.assign
将对象文字分配给MyClass
的实例:
myclassarray: MyClass[] = [
Object.assign(new MyClass(), {
field1: 'hello',
field2: 3,
field3: false
})
];
答案 1 :(得分:0)
由于您正在使用类,为什么不使用构造函数?
class MyClass {
constructor(public field1: string, public field2: number, public field3: boolean) {}
myMethod() {
this.field2 = this.field2 + 2;
}
show() {
console.log(this.field2);
}
}
let myclassarray = new MyClass(
'hello', 3, false
);
然后您可以这样称呼它们:
myclassarray.myMethod();
myclassarray.show(); // logs 5
答案 2 :(得分:-1)
首先需要创建MyClass的对象,然后初始化值然后推入数组。
myclassarray: Array<MyClass> = [];
myClass: MyClass = new MyClass();
myClass.field1 ='';
myClass.field2 =1;
myClass.field3 = false;
myclassarray.push(myClass);