我的界面如下:
interface IMenu {
name: string;
page: any;
quantity: number;
headerColor: string;
icon: string;
unitsList: IUnitInfo[];
pageType: UnitPageType;
}
我想要分配类型的变量具有分配给它的那种值:
this._menus = [
{
name: 'menu1',
page: page1,
quantity: 2,
headerColor: "red",
icon: "arrow",
unitsList: this._unitsList,
pageType: UnitPageType.All
},
{
name: 'menu2',
page: page2,
quantity: 4,
headerColor: "orange",
icon: "phone",
unitsList: 0,
pageType: UnitPageType.None
}
];
现在,如果我这样做,它会给我一个警告:
private _menus: IMenu[];
那么,什么是正确的类型?
由于
答案 0 :(得分:0)
只要您添加到数组中的每个元素都与IMenu
接口兼容,它就会起作用:
var menus: IMenu[] = [
{
name: 'menu1',
page: page1,
quantity: 2,
headerColor: "red",
icon: "arrow",
unitsList: this._unitsList,
pageType: UnitPageType.All
},
{
name: 'menu2',
page: page2,
quantity: 4,
headerColor: "orange",
icon: "phone",
unitsList: [],
pageType: UnitPageType.None
}
];
事实上,这就是为什么键入你的_menus
成员是个好主意,因为它已经在你的代码中捕获了一个可能无意的错误(你使用0
的数组{ {1}}是预期的。
如果这不是一个错误,你可以使用这样的联合类型让你的界面意识到这是可以接受的:
IUnitInfo
其中任何一个都可以解决问题 - 所以你可以决定哪个是有效的。