GWT JsInterop - 在 JavaScript 中扩展 Java 接口

GWT JsInterop - extending a Java interface in JavaScript

因此,我们正在尝试使用 JsInterop,以便在我们的 GWT 应用程序中,我们可以使用在 JavaScript 中外部创建的一些模块。

我们有一个接口,它有一些契约,一些方法必须由所有视图实现。

例如:

package com.foo;

import jsinterop.annotations.JsPackage;
import jsinterop.annotations.JsType;

@JsType(namespace = JsPackage.GLOBAL) 
public interface MyView {

    void doSomething();
    void doSomethingElse();
    Element getElement();   
}

现在想象一下,在 JS 端,我们有那个接口的实现:

export class MyViewImplementation extends window.$wnd.MyView {

  constructor() {
    super();
  }

  doSometing() {
    //Implementation goes here
  }

  doSomethingElse() {
    //Implementation goes here
  }

  getElement() {
    var div = document.createElement("div");
    div.textContent = "External Component Test";
    return div;
  }
}

这个可以吗? 目前,我有一个错误说: Class extends value undefined 不是构造函数或 null

根据您对我的评论的反馈,我将从您的界面中删除 @JsType 并引入 class 和 @JsType(isNative=true) 来实现该界面。

public interface MyView {

    void doSomething();
    void doSomethingElse();
    Element getElement();   
}

public class JavaView implements MyView {
    // . . .
}

@JsType(isNative = true, namespace = JsPackage.GLOBAL)
public class JsView implements MyView {

    @Override
    public native void doSomething();

    @Override
    public native void doSomethingElse();

    @Override
    public native Element getElement();   
}

然后在JavaScript:

export class JsView {
    // . . .
}