2017-11-13 13 views
0

私の目標はKのすべてのキーの「正確なオブジェクトタイプ」であるEntitiesタイプを作成することです。複数のインデクサーはエラーを許可されていませんがインデクサーではありません

Kは次のとおりです。

type SocialEntity =  Article | Thumb | Comment | Displayname | Helpful; 
type SocialEntityKind = 'articles' | 'thumbs' | 'comments' | 'displaynames' | 'helpfuls'; 


const K: {[key: SocialEntityKind]: SocialEntityKind} = { // short for SOCIAL_ENTITY_KIND 
    articles: 'articles', 
    thumbs: 'thumbs', 
    comments: 'comments', 
    displaynames: 'displaynames', 
    helpfuls: 'helpfuls' 
} 

は、今私は[key: typeof K.*]を設定するが、そのこれらのインデクサーを考慮してみました。ここで

type Entities = {| 
    [key: typeof K.articles]: { 
     [key: ArticleId]: Article 
    }, 
    [key: typeof K.thumbs]: { 
     [key: ThumbId]: Thumb 
    }, 
    [key: typeof K.comments]: { 
     [key: CommentId]: Comment 
    }, 
    [key: typeof K.displaynames]: { 
     [key: DisplaynameId]: Displayname 
    }, 
    [key: typeof K.helpfuls]: { 
     [key: HelpfulId]: Helpful 
    } 
|} 

は、エラーのスクリーンショットです:

これを行うには、任意の簡単かつ正しい方法はありますか?

答えて

2

この構文は、実行しようとしているものでは機能しません。 Flowtypeの[key: TYPE]: TYPEusing objects as dictionariesの構文であり、計算されたプロパティ名の構文ではありません。

タイプがちょうどstringであり、正確にはarticlesではないので、typeofを使用することもできません。手動でキーの名前を入力する必要があります。

+0

Drats、thanks logan。 – Noitidart

関連する問題