2014-10-31 92 views
1

根据W3C建议的方法getSVGDocument()应返回SVGDocument但lib.d.ts代码:如何在Typescript中使用SVGDocument?

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

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

TypeScript中的document.rootElement和w3规范一样都返回一个SVGSVGElement。

由于TypeScript使用结构化类型(并且类型匹配于此),因此您可以立即使用它。

编辑: 因为lib.d.ts的结构是这样的你有,你可以举例来说,你不能在SVGDocument因为它没有编译这是有点可惜用做document.forms问题方式..

3

打字稿Document类型是可比的SVGDocument,所以你应该罚款只使用Document。您需要确保将您的元素作为正确类型(SVGElementSVGSVGElement)进行铸造。

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

相关问题