繁体   English   中英

引入抽象 class 或属性时出现 Typescript 错误?

[英]Typescript error when introducing Abstract class or properties?

我有一个定义如下的 DOCUMENTATION_CATALOG:

export const DOCUMENTATION_CATALOG: {[key:string]:TopicCategory[]} = {}

我们可以像这样得到TopicCategory数组;

const values:TopicCategory[] =
     Object.keys(DOCUMENTATION_CATALOG).map(
     key => DOCUMENTATION_CATALOG[key])

当我使用AbstractTopic扩展TopicCategory时, values变量出现以下错误:

常量值:TopicCategory[] 类型“TopicCategory[][]”不可分配给类型“TopicCategory[]”。 类型“TopicCategory[]”与类型“TopicCategory”没有共同的属性。

这是Stackblitz

我把它隔离得更远一点。 如果TopicCategory中没有属性,则不会触发错误。

您的DOCUMENTATION_CATALOG是从stringTopicCategory[]的 map 。

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

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

有两种不同的解决方案:

任何一个value都必须是TopicCategory[][]类型,

DOCUMENTATION_CATALOG需要是{[key:string]:TopicCategory}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM