JsInterop - получить значение в массиве

Я создал свой собственный массив в JsInterop:

@JsType(isNative = true, namespace = JsPackage.GLOBAL, name = "Array")
public interface Array<T> 
{
    public void push(T value);

    @JsProperty(name = "length")
    public int getLength();

    @JsProperty(name = "length")
    void setLength(int newLength);

    @JsOverlay
    default T get(int index) {
        return JsArrayHelper.getArrayValue(this, index);
    }
}

А вот класс JsArrayHelper, уменьшенный:

public class JsArrayHelper 
{
    //TODO: Eliminate JSNI. Better way to do this?
    public static native <T> T getArrayValue(Array<T> a, int i) /*-{
        return a[i];
    }-*/;
}

Есть ли лучший способ получить значение массива вместо использования JSNI?

1 ответ

Использование com.google.jsinterop:base lib, эта библиотека должна включать утилиты для всего, что не может быть сделано с JsInterop, и библиотека будет поддерживать совместимость с GWT и j2cl. Библиотека довольно мала (всего 10 классов, 2 из них внутренние), поэтому просто добавьте ее в свой проект и изучите все его утилиты.

Так что вместо твоего обычая Array<T>.get(int) а также JsArrayHelper классы использования jsinterop.base.JsArrayLike<T>.getAt(int),

Другие вопросы по тегам