Как создать kotlin.collections.Set из простого массива JavaScript? - PullRequest
0 голосов
/ 16 марта 2019

Я пытаюсь вызвать простой JavaScript в модуль Kotlin, который был скомпилирован в JavaScript. Один из методов Kotlin внутри модуля требует прохождения kotlin.collections.Set. Как я могу создать такой набор объектов из простого массива JavaScript? Я изучил скомпилированный код, и Котлин делает внутренние ссылки на такие методы, как Kotlin.kotlin.collections.setOf_i5x0yv$, но я не вижу способа вызывать их извне.

1 Ответ

2 голосов
/ 21 марта 2019

Согласно документации Kotlin Наборы не представлены в Javascript.

С другой стороны, сопоставляются массивы.Поэтому можно написать простую функцию, которая отображает массив Javascript в набор Kotlin.

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

Эта функция может использоваться при вызове функции Kotlin из Javascript следующим образом:

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

и функция Kotlin, реализованная как:

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