javascript - 从 JavaScript 使用 Kotlin 标准库

标签 javascript kotlin kotlin-js kotlin-js-interop

我编写了一个 Kotlin 函数,它消耗 List<String> 。该函数有一个注释 @JsName这样我就可以从 JavaScript 调用这个函数。我无法确定我应该将什么传递给这个函数。传递 JavaScript 数组不起作用,因为 Kotlin-JS 代码调用 iterator在物体上。此外,Kotlin 标准库中的名称都被破坏了;所以我不能以任何可靠的方式打电话说 listOf在 JavaScript 中并将结果传递给函数。

问题是,如果 Kotlin 标准库名称被破坏,我们应该如何创建除了简单类型(数字、字符串等)之外的对象函数并将其传递给对象函数?

最佳答案

在 Kotlin 中与 JavaScript 互操作时,您可以使用 ArrayList,因为 List是一个接口(interface)(JavaScript 中没有),其实际实现(之一)是 ArrayList .

当您处理List<String>时,您可以在 JavaScript 中执行此操作:

let list = new kotlin.kotlin.collections.ArrayList(["foo","bar","baz"])

您可以通过list变量到需要 List<String> 的函数参数。

备注:

  1. 您可以调用list.toArray()如果您的某些 Kotlin 函数返回列表,则将列表从 Kotlin 转换回 JavaScript 数组。
  2. 我会声明“中间人”(适配器)函数,将项目推送到 List ,需要 MutableList并调用add ,因为库函数被破坏了。 (我也想要一个更合适的方法来做到这一点)
  3. 如果您需要处理自定义对象列表,例如类Foo ,您应该可以调用 new <package>.<identifier>...Foo(params) .

关于javascript - 从 JavaScript 使用 Kotlin 标准库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57513347/

相关文章:

javascript - 如何在 React 应用中处理多个环境

enums - Kotlin-使用枚举检索字符

android - 在Kotlin中将ByteArray转换为PrivateKey

javascript - Kotlin/JS,Gradle 插件 : Unable to load '@webpack-cli/serve' command

gradle - 插件如何提供扩展任务?

javascript - 无法使用 JQuery 更改 z-index

php - 在 php echo 中重新加载页面不起作用

javascript - 更新多个模型属性时防止 Kendo 网格数据绑定(bind)事件

android-studio - Kotlin - 可解析类型不匹配 : Required: String, 找到 : String?