Проверка доступности метода или свойства в оверлеях GWT Elemental2

Хотя свойство или метод могут быть предоставлены в оверлее Elemental2, как вы можете проверить, действительно ли оно определено в базовом объекте JS?

DomGlobal класс имеет hasOwnProperty() метод, который, кажется, делает то, что я хочу:

// WORKS
if (DomGlobal.hasOwnProperty("console")) {
    DomGlobal.console.log(object);
}

Но как я могу проверить наличие методов на console сам объект? Я хотел бы иметь возможность сделать что-то вроде этого:

// DOESN'T WORK
if (DomGlobal.console.hasOwnProperty("warn")) {
    DomGlobal.console.warn(object);
}

Это не работает, потому что hasOwnProperty() не определен в console наложение.

Что я должен делать вместо этого? Нужно ли мне определять мое собственное наложение или приведение к наложению, которое включает метод?

Это правильно?

Js.<JsObject>cast(DomGlobal.console).hasOwnProperty("warn")

Это кажется немного глотком. Существуют ли стандартные утилиты, позволяющие сделать это более лаконично, или я должен написать свою собственную?

1 ответ

Решение

Я нашел этот ответ в старой закрытой проблеме для Elemental2:

Js.asPropertyMap(object).has("key");
Другие вопросы по тегам