我需要确定通过SVG.get()
检索的元素是否是组(SVG.G
)。我以为这是一个简单的instanceof
检查,但是我在Typescript中遇到了never
类型错误。
代码如下:
// Get the element from the <defs> section
const newuse = svg.get(key);
// Set the fill colour
const fill = "red";
// If it's a group, go through and fill all children with the "data- playerfill" attribute
if ( newuse instanceof svg.G ) {
// I have to do this in Typescript because the Set doesn't have a "fill" function defined
(newuse as svg.G).select("[data-playerfill=true]").each(function(this: svg.Element) { this.fill(fill); });
} else {
// Just a single element that you fill
newuse.fill(fill);
} }
问题是我在最后一行收到以下错误:
Property 'fill' does not exist on type 'never'.
据我所知,这意味着else子句永远不会被求值。但是我不确定为什么。 all SVG.Element
也是SVG.G
吗?我当然不这么认为。
任何指导表示赞赏。谢谢!
答案 0 :(得分:1)
由于现在已正确地将Svg.G声明为类,因此testof的instanceof现在应该可以在3.0.12中正常工作。
答案 1 :(得分:0)
此处的解决方法是不使用instanceof
。在SVG.js(始终为v2.7.1)中使用is()
方法。
if (x.is(SVG.G))