在Typescript中向接口数组列表添加项目

时间:2018-09-20 07:25:50

标签: angular typescript

我有一个由PrimeNG自动创建的名称为SelectItem的接口,如下所示。我想创建一个实例并添加我的选择项数组。如果SelectItem是类而不是接口,则代码将起作用。但是现在,出现了错误。 请不要建议将SelectItem的类型从界面更改为“类” 。我无法更改,因为它是primeNG的组成部分。我该如何实现?

selectitem.ts

export interface SelectItem {
    label?: string;
    value: any;
    styleClass?: string;
    icon?: string;
    title?: string;
    disabled?: boolean;
}

我的方法

  addUnselectedItem(selectItemList: SelectItem[]) {
    let selectItem = new SelectItem(); //this row giving error
    selectItem.value = "";
    selectItem.label = "Please Select";

    selectItemList.push(selectItem);
  }

2 个答案:

答案 0 :(得分:3)

您可以简单地:

selectItemList.push({
  value: "",
  label: "Please Select",
});

https://www.typescriptlang.org/docs/handbook/interfaces.html

  

TypeScript的核心原则之一是类型检查的重点是   值的形状。有时称为“鸭子打字”或   “结构子类型化”。在TypeScript中,接口充当以下角色   命名这些类型,是定义合同的有效方法   在您的代码中以及与您外部代码的合同   项目。

因此,可以将满足该合同的所有对象视为SelectItem。创建实例实际上没有任何意义,因为在运行时接口被完全剥离了。它们只是为了“开发时间”的方便。

答案 1 :(得分:-1)

您不能创建Interface的实例,而可以执行以下操作

let selectItem :SelectItem; 
selectItem.value = "";
selectItem.label = "Please Select";

selectItemList.push(selectItem);