数组中的通用类型?

时间:2017-05-09 11:34:15

标签: angular typescript ionic2

我试图创建一个模拟应用程序,将一些数据显示为按钮列表。我实现了一切,但我现在面临这个问题。我初始化了一个数组和另一个数据类。

-items.ts

  export class ItemPage {

  items: Item[] = [];

  constructor() {

    this.items.push(
      new Item(1, 'Apple', 'Green', 6, true));
    this.items.push(
      new Item(2, 'Banana', 'Yellow', 15, false));
  }

,数据类看起来像这样

-item.ts

export class Item {
  constructor(
    id: number,
    fruit: string,
    color: string,
    quantity: number,
    onStock: boolean,
  ) { }
}

当我运行items: Item[] = [];时,我遇到了ionic serve的问题。它说Generic type 'Item' requires 2 type argument(s)type Item<K extends string, T> = { [P in K]: T; } Construct a type with a set of properties K of type T 我试图解决它,但它没有帮助,有没有人有任何想法如何解决这个问题?
感谢

1 个答案:

答案 0 :(得分:0)

我没有完全设法重现这个问题,而是以两个空对象结束。错误似乎是您没有将类中的属性设置为public,因此将类更改为:

export class Item {
  constructor(
    public id: number,
    public fruit: string,
    public color: string,
    public quantity: number,
    public onStock: boolean,
  ) { }
}

似乎工作正常: Plunker

但是我强烈建议您使用接口,如果您不需要在类或其他原因中使用函数。所以我说你做界面:

export interface Item {
  id: number;
  fruit: string;
  color: string;
  quantity: number;
  onStock: boolean;
}

constructor(private navController: NavController) {
  this.items.push({id:1, fruit:'Apple', color:'Green', quantity:6, onStock:true});
  this.items.push({id:2, fruit: 'Banana',color:'Yellow',quantity:15,onStock:false})
}

希望这有帮助!