我的目标是创建一个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
}
|}
以下是错误的屏幕截图:
有没有简单明了的方法呢?
答案 0 :(得分:1)
该语法不适用于您尝试执行的操作。 Flowtype中的[key: TYPE]: TYPE
是using objects as dictionaries的语法,而不是计算属性名称的语法。
也无法以您希望的方式使用typeof
,因为类型只是string
,而不是articles
。您必须手动输入密钥的名称。