如何在 Kotlin 中使用名为 "val()" 的函数? / 扩展外部 JS 类

How to use a function called "val()" in Kotlin? / extend external JS classes

我在尝试将 Cloud Functions for FirebaseKotlin 结合使用时遇到问题。

当从 数据库触发器 访问数据时,您使用 Javascript 中的 snapshot.val(); 函数。在 Kotlin 中,这 不可能 因为 valKotlin 中的关键字。我设法通过使用

解决了这个问题
snapshot.`val()`

这样我就可以调用 Kotlin 中任意名称的函数了。现在我觉得每次都输入这个 "grave accent" (`) 真的很烦人,所以我尝试创建一个扩展函数。

我的问题是我不知道如何引用类型。在Javascript访问数据库时是DeltaSnapshot or DataSnapshot

如何扩展外部 类 或者如何用不同的名称调用它? 类型别名将不起作用,因为它们仅限于 类 / 而不是支持函数。

在 javascript 中 class 也是一个对象

snapshot['val']();

更通用

object[functionName]();

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

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

您尝试跟随了吗?

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

试试这个:

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

对我有用