根据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实现,或者我如何实现它?
答案 0 :(得分:4)
打字稿Document
类型与SVGDocument
相当,因此您可以使用Document
。您需要确保将元素作为正确的类型(SVGElement
或SVGSVGElement
)进行投放。
此外,您可以在Typescript中进行双重投射。这可能允许您想出一种方法将元素/文档转换为any
并返回到您遇到其他问题时所需的文档/元素类型。
答案 1 :(得分:0)
根据w3规范,SVGDocument实现了Document并添加了一些内容,如title
,referrer
,rootElement
等内容。
这些都是在TypeScript的Document界面上定义的,因此您可以在不更改任何内容的情况下使用它。
在W4规范中,TypeScript中的document.rootElement都返回一个SVGSVGElement。
因为TypeScript使用结构类型(并且类型匹配在这里),所以您可以立即使用它。
编辑:
由于lib.d.ts的结构是这样的,你确实遇到了问题,例如你可以在SVGDocument上使用document.forms
,这有点不幸,因为它确实以这种方式编译..