我写了一个消耗List<String>
的Kotlin函数。该函数带有@JsName
的注释,因此我可以从JavaScript调用此函数。我无法确定我应该传递给此函数的内容。传递JavaScript数组不起作用,因为Kotlin-JS代码在对象上调用iterator
。此外,Kotlin标准库中的名称全部被篡改。因此我无法以任何可靠的方式在JavaScript中调用说listOf
并将结果传递给函数。
然后的问题是,如果要破坏Kotlin标准库名称,我们应该如何创建普通类型(数字,字符串等)并将其传递给对象函数?
答案 0 :(得分:0)
在Kotlin中与JavaScript互操作时,可以使用ArrayList,因为List
是一个接口(JavaScript中没有),并且(其中之一)其实际实现是ArrayList
。
在处理List<String>
时,可以使用JavaScript进行此操作:
let list = new kotlin.kotlin.collections.ArrayList(["foo","bar","baz"])
您可以将list
变量传递给需要List<String>
参数的函数。
备注:
list.toArray()
将列表从Kotlin转换回JavaScript数组。List
,并接受MutableList
并调用add
,因为该库函数已损坏。 (我也想要一种更合适的方法)Foo
类的用户,您应该可以致电new <package>.<identifier>...Foo(params)
。