我有一个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是从stringTopicCategory[]的映射。

您的values类型为TopicCategory[],但是传递给map()的回调将返回DOCUMENTATION_CATALOG中的值之一,即TopicCategory[]。因此,map()调用的结果是TopicCategory[]的数组,即TopicCategory[][]

我无法提供任何建议,因为我不确定value的预期用途是什么,或者DOCUMENTATION_CATALOG类型是否错误。

有两种不同的解决方案:

value的类型必须为TopicCategory[][]

DOCUMENTATION_CATALOG必须为{[key:string]:TopicCategory}

09-25 10:04