多个索引器不允许出错,但它们不是索引器

时间:2017-11-13 01:02:31

标签: flowtype

我的目标是创建一个Entities类型,这是一个"确切的对象类型" K中的所有键。

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

以下是错误的屏幕截图:

有没有简单明了的方法呢?

1 个答案:

答案 0 :(得分:1)

该语法不适用于您尝试执行的操作。 Flowtype中的[key: TYPE]: TYPEusing objects as dictionaries的语法,而不是计算属性名称的语法。

也无法以您希望的方式使用typeof,因为类型只是string,而不是articles。您必须手动输入密钥的名称。