2016-04-03 3 views
0

Ich habe eine Schnittstelle, die wie folgt aussieht: esWas wäre der Variablentyp für meine Typescript-Variable?

interface IMenu { 
    name: string; 
    page: any; 
    quantity: number; 
    headerColor: string; 
    icon: string; 
    unitsList: IUnitInfo[]; 
    pageType: UnitPageType; 
} 

Die Variable, die ich zugewiesen, diese Art von Wert hat einen Typ zuordnen wollen:

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

Gerade jetzt, wenn ich das tue, es gibt mir eine Warnung:

private _menus: IMenu[]; 

Also, was wäre der richtige Typ?

Dank

+4

"es gibt mir eine Warnung" - welche Warnung? Es sieht so aus, als wäre 'unitsList: 0' falsch, da '0' eine Zahl ist, aber 'unitsList' vom Typ 'IUnitInfo [] 'ist. – Aaron

Antwort

0

Es wird so lange arbeiten, wie jedes Element, das Sie den Array hinzufügen, mit dem IMenu Schnittstelle kompatibel ist:

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

In der Tat ist der Grund, warum es eine gute Idee ist, Sie zu geben _menus Mitglied, weil es bereits einen möglicherweise unbeabsichtigten Fehler im Code zu kontrollieren (die Nutzung von 0, wo eine Reihe von IUnitInfo erwartet wird.

ist dies nicht ein Fehler ist,

unitsList: number | any[]; 

Jede dieser behebt das Problem - so können Sie entscheiden, welche in Ihrem Fall gültig ist: Sie können Ihre Schnittstelle bewusst, dass dies akzeptabel ist, mit einer Union-Typ wie diese machen.

Verwandte Themen