2016-04-03 17 views
0

私がどのように見えるインターフェースがあります、私はこれを行う場合は、今Typescript変数にはどのような変数型がありますか?

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

:私はタイプを割り当てたい変数がそれに割り当てられた値のようなものを持っている

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

private _menus: IMenu[]; 

正しいタイプは何ですか?

おかげ

+4

「それは私に警告を与える」 - どのような警告? 'unitsList:0'は間違っていますが' 0'は数字ですが 'unitsList'は' IUnitInfo [] 'です。 – Aaron

答えて

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メンバー、これはエラーではない場合、それはすでに、おそらく意図的でないあなたのコード内のエラー(IUnitInfoの配列が期待されている0の使用。

をキャッチされているので、あなたはこのように労働組合タイプを使用して、これは許容可能であることを、あなたのインターフェースを認識させることができます。

unitsList: number | any[]; 

これらのいずれかが問題を解決します - あなたはあなたのケースで有効であるかを決定することができます。

関連する問題