如何从普通 JavaScript 数组创建 kotlin.collections.Set?

How to create kotlin.collections.Set from plain JavaScript array?

我正在尝试从纯 JavaScript 调用已编译为 JavaScript 的 Kotlin 模块。模块内的 Kotlin 方法之一需要传递 kotlin.collections.Set。我如何从一个普通的 JavaScript 数组创建这样一个集合对象?我查看了编译后的代码,Kotlin 对 Kotlin.kotlin.collections.setOf_i5x0yv$ 等方法进行了内部引用,但我认为无法从外部调用这些方法。

根据 Kotlin documentation 集未在 Javascript 中表示。

另一方面,数组是映射的。因此,可以编写一个简单的函数,将 Javascript 数组映射到 Kotlin 集合中。

@JsName("createSetFromJsArray")
fun <TValue> createSetFromJsArray(array: Array<TValue>) = array.toSet()

从 Javascript 调用 Kotlin 函数时可以使用此函数,如下所示:

var test = ["a", "b", "c"];
aKotlinFunction(createSetFromJsArray(test));

和一个 Kotlin 函数实现如下:

@JsName("aKotlinFunction")
fun aKotlinFunction(test: Set<String>) {
    console.log("aKotlinFunction called with param ${test.joinToString()}")
}