我有一个DOCUMENTATION_CATALOG的定义如下:
export const DOCUMENTATION_CATALOG: {[key:string]:TopicCategory[]} = {}
我们可以这样获得
TopicCategory
数组;const values:TopicCategory[] =
Object.keys(DOCUMENTATION_CATALOG).map(
key => DOCUMENTATION_CATALOG[key])
当我用
TopicCategory
扩展AbstractTopic
时,对于values
变量会出现以下错误:const值:TopicCategory []
类型“ TopicCategory [] []”不可分配给类型“ TopicCategory []”。
类型'TopicCategory []'与类型'TopicCategory'没有共同的属性。
这是Stackblitz
我进一步隔离了它。如果
TopicCategory
中没有任何属性,则不会触发该错误。 最佳答案
您的DOCUMENTATION_CATALOG
是从string
到TopicCategory[]
的映射。
您的values
类型为TopicCategory[]
,但是传递给map()
的回调将返回DOCUMENTATION_CATALOG
中的值之一,即TopicCategory[]
。因此,map()
调用的结果是TopicCategory[]
的数组,即TopicCategory[][]
。
我无法提供任何建议,因为我不确定value
的预期用途是什么,或者DOCUMENTATION_CATALOG
类型是否错误。
有两种不同的解决方案:value
的类型必须为TopicCategory[][]
,
或DOCUMENTATION_CATALOG
必须为{[key:string]:TopicCategory}
。