如何在Typescript中使用SVGDocument?

时间:2014-10-31 11:13:43

标签: typescript dom svg

根据W3C建议,方法getSVGDocument()应返回SVGDocument,但lib.d.ts中的代码为:

interface GetSVGDocument {
    getSVGDocument(): Document;
}

那我怎么能这样做?

var svgDoc:SVGDocument= document.getElementById('myId').getSVGDocument();
var svgElement:SVGElement = svgDoc.getElementById("myElement");
... further manipulations on svgElement

更一般地说,他们是通过TypeScript中的SVG实现传递的,还是我错过了什么?

是否有适当的SVG DOM实现,或者我如何实现它?

2 个答案:

答案 0 :(得分:4)

打字稿Document类型与SVGDocument相当,因此您可以使用Document。您需要确保将元素作为正确的类型(SVGElementSVGSVGElement)进行投放。

此外,您可以在Typescript中进行双重投射。这可能允许您想出一种方法将元素/文档转换为any并返回到您遇到其他问题时所需的文档/元素类型。

答案 1 :(得分:0)

根据w3规范,SVGDocument实现了Document并添加了一些内容,如titlereferrerrootElement等内容。 这些都是在TypeScript的Document界面上定义的,因此您可以在不更改任何内容的情况下使用它。

在W4规范中,TypeScript中的document.rootElement都返回一个SVGSVGElement。

因为TypeScript使用结构类型(并且类型匹配在这里),所以您可以立即使用它。

编辑: 由于lib.d.ts的结构是这样的,你确实遇到了问题,例如你可以在SVGDocument上使用document.forms,这有点不幸,因为它确实以这种方式编译..