从JavaScript使用Kotlin标准库

时间:2019-08-15 16:59:22

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

我写了一个消耗List<String>的Kotlin函数。该函数带有@JsName的注释,因此我可以从JavaScript调用此函数。我无法确定我应该传递给此函数的内容。传递JavaScript数组不起作用,因为Kotlin-JS代码在对象上调用iterator。此外,Kotlin标准库中的名称全部被篡改。因此我无法以任何可靠的方式在JavaScript中调用说listOf并将结果传递给函数。

然后的问题是,如果要破坏Kotlin标准库名称,我们应该如何创建普通类型(数字,字符串等)并将其传递给对象函数?

1 个答案:

答案 0 :(得分:0)

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

在处理List<String>时,可以使用JavaScript进行此操作:

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

您可以将list变量传递给需要List<String>参数的函数。

备注:

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