Как использовать функцию «val ()» в Котлине? / расширить внешние классы JS

Я столкнулся с проблемой при попытке использовать функции Cloud для Firebase с Kotlin .

При доступе к данным из триггера базы данных вы используете snapshot.val(); функции в Javascript . В Котлине это невозможно, потому что val является ключевым словом в Котлине . Мне удалось обойти это, используя

 snapshot.`val()` 

Таким образом, я могу вызывать функции с любым именем в Котлине . Теперь я думаю, что на самом деле очень неприятно набирать этот «серьезный акцент» (`) thingy каждый раз, поэтому я попытался создать функцию расширения.

Моя проблема заключается в том, что я не знаю, как ссылаться на тип. В Javascript это DeltaSnapshot или DataSnapshot при доступе к базе данных.

Как расширить внешние классы или как я могу назвать это другим именем? Typealiases не будут работать, потому что они ограничены классами / вместо поддержки функций.

Вы пробовали следовать?

 external class MyClass { @JsName("val") fun foo() } 

В javascript класс также является объектом

 snapshot['val'](); 

Более общий

 object[functionName](); object[functionName].call(object, ...args); object[functionName].apply(object, args); 

попробуй это:

 js("snapshot.val()").yourKotlinCode 

меня устраивает

Intereting Posts
Как подключить HazelcastClient к HazelcastServer после перезагрузки сервера Можем ли мы определить наши аксессоры без значения init? Как проектировать для сокращения избыточных классов в Котлине? Как использовать Kotlin для записи функции Y-combinator? Как скомпилировать и использовать код Kotlin во время выполнения? Как получить список всех классов в файле .kt gradle multi-project: каталог сборки появляется в корневом каталоге, содержащем артефакты Котлина Конвертировать бесконечно бегущий Runnable из java в kotlin Есть ли способ реализовать разбиение на страницы весной? Как настроить динамические опорные точки для поворота анимации Итерирование по файлам, разбиение по шаблону Список несоответствий типа Kotlin <Any> и List <Comparable <{com.cognitect.transit.Symbol & com.cognitect.transit.Keyword}>?> Проверка общего типа метода Котлина Ошибка при переходе с Java на Kotlin. Ошибка – org.gradle.api.tasks.TaskExecutionException: выполнение не выполнено для задачи: app: compileDebugKotlin ' Особенность Kotlin `typealias`