我的Typescript变量的变量类型是什么?

时间:2016-04-03 00:16:03

标签: typescript

我的界面如下:

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[];

那么,什么是正确的类型?

由于

1 个答案:

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

其中任何一个都可以解决问题 - 所以你可以决定哪个是有效的。