TypeScript语法出错:带方法的声明性数组

时间:2017-09-07 12:41:43

标签: angular typescript

我的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
}];

因为在我的类中有一个实例方法而不是静态方法。 问题是:如何声明一个元素数组,其中还包含对我有用的非静态方法?

我也不理解允许您以声明方式初始化这些项的语法。

3 个答案:

答案 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);