我有一个由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);
}
答案 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);