2017-01-09 6 views
0

だから私は、このデータ構造は、あなたを行う、どのように

export interface StoreData { 
    msdb: {[tableName: string]: List<StoreModel>}; 
} 

を持っていますが、私は許可したい(とIntelliSenceを得る)私のtableNameのための特定の文字列値になりオブジェクトリテラルために特定のキーを入力します。 は、だから私は、次のようなものを試してみましたが、それはうまくいきませんでした。また、運

interface IMyTables { 
    'table_campaigns: string 
    'table_resources: string; 
} 

type MyTables = keyof IMyTables; 

export interface StoreData { 
    participants: { [key: number]: any }; 
    threads: { [key: number]: any }; 
    messages: { [key: number]: any }; 
    msdb: {MyTables: List<StoreModel>}; 
} 

で試してみました

var tableNames:'table_campaigns' | 'table_resources' 
export interface StoreData { 
    msdb: {[tableName]: List<StoreModel>}; 
} 

もそれをやった

type allMyTables = 'table_campaigns' | 'table_resources' 

export interface StoreData { 
    msdb: {[tableName: allMyTables]: List<StoreModel>}; 
} 




Thanks for reading, 

Sean 
+1

多分私は誤解していますgではなく、索引付けの代わりに明示的なプロパティーを追加するのはなぜですか? 'msdb:{[tableName:string]:リスト、table_campaigns:リスト、table_resources:リスト}'、。 –

答えて

1

おかげでジェフを、試してみました:

export interface StoreData { 
    participants: { [key: number]: any }; 
    threads: { [key: number]: any }; 
    messages: { [key: number]: any }; 
    msdb: { 
     'table_campaigns': List<StoreModel>; 
     'table_resources': List<StoreModel>; 
    }; 
} 
関連する問題