SVG.js:检测“元素”是否为“组”
SVG.js: Detecting if an `Element` is a `Group`
我需要确定通过 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 子句。但我不确定为什么。 全部 SVG.Element
也是SVG.G
吗?我当然不这么认为。
任何指导表示赞赏。谢谢!
此处的解决方法是不使用 instanceof
。使用 SVG.js 中的 is()
方法(v2.7.1,无论如何)。
if (x.is(SVG.G))
instanceof 测试现在应该可以在 3.0.12 中正常工作,因为 Svg.G 现在被正确声明为 class.
我需要确定通过 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 子句。但我不确定为什么。 全部 SVG.Element
也是SVG.G
吗?我当然不这么认为。
任何指导表示赞赏。谢谢!
此处的解决方法是不使用 instanceof
。使用 SVG.js 中的 is()
方法(v2.7.1,无论如何)。
if (x.is(SVG.G))
instanceof 测试现在应该可以在 3.0.12 中正常工作,因为 Svg.G 现在被正确声明为 class.