2014-10-31 73 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,並返回到所需的文檔/元素類型,以防遇到更多問題。

相關問題