繁体   English   中英

具有联合类型的扩展接口抛出“属性在类型上不存在”错误。 如何解决这个问题?

[英]Extended interfaces with union type is throwing "property does not exist on type" error. How to fix this?

如下面的屏幕截图所示,我有一个基本界面,我已经扩展它以创建 2 个带有额外字段的新界面。

我将这些聚合在一起作为联合类型ChordShapes

访问字段variant时,我收到第 3 个屏幕截图中所示的错误。

如何解决这个问题?

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

看起来 TypeScript 阻止我潜在地访问IChordShape上的variant ,这不存在。 使用in的以下更改解决了该问题:

if("variant" in rawShape && rawShape["variant"] === "inversion"){}

这是为了确保属性variant在访问它之前确实存在

或者

修改IChordShape以包括variant: string; 并在扩展接口中为variant保留更具体的类型,以便访问rawShape["variant"]不会出错。

暂无
暂无

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

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