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

时间:2017-09-06 14:13:45

标签: javascript node.js firebase kotlin google-cloud-functions

我在尝试将Cloud Functions for Firebase Kotlin 一起使用时遇到了问题。

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

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

这样我可以在 Kotlin 中调用任何名称的函数。现在我觉得每次输入这个“严重的重音”(`)都很烦人,所以我试着创建一个扩展功能。

我的问题是我不知道如何引用该类型。在 Javascript 中,访问数据库时为DeltaSnapshotDataSnapshot

如何扩展外部类或如何通过其他名称调用它? Typealiases不起作用,因为它们仅限于类/而不是支持函数。

3 个答案:

答案 0 :(得分:3)

你有没有试过?

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

答案 1 :(得分:1)

在javascript中,一个类也是一个对象

snapshot['val']();

更通用

object[functionName]();

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

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

答案 2 :(得分:0)

try this:

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

it works for me