>假设我有一个com.google.gwt.dom.client.Document gwtDocument
节点,我想将其转换为elemental2.dom.Document
?
由于文档扩展了JavaScriptObject,我假设我可以做这样的事情:
elemental2.dom.Document elementalDoc = (elemental2.dom.Document)(gwtDocument);
但是,使用 jsinterop 的 elemental2 类不会扩展 JavaScriptObject。那么如何在两者之间进行转换呢?
谢谢!
您可以先强制转换为对象,然后强制转换为元素类型 (1(。这有点难看,所以有一个实用程序库可以在GWT和J2CL中使用,称为jsinterop-base。Js
实用程序可用于cast
(2( 和uncheckedCast
(3( 任何对象。应避免使用uncheckedCast
,并且仅在您知道自己在做什么时才使用(例如,在 iframe 之间转换或其他特殊的 js 情况(。
com.google.gwt.dom.client.Document gwtDocument = Document.get();
elemental2.dom.Document el1 = (elemental2.dom.Document) (Object) gwtDocument; //(1)
elemental2.dom.Document el2 = jsinterop.base.Js.cast(gwtDocument); //(2)
elemental2.dom.Document el3 = jsinterop.base.Js.uncheckedCast(gwtDocument); //(3)
因此,在客户端代码中,应使用 Js.cast
将 GWT
dom 实例强制转换为elemental2
实例。