Spec-Zone.ru › Kotlin 1.9

Использование зависимостей из npm

В проектах Kotlin/JS все зависимости можно управлять с помощью плагина Gradle. Это включает в себя библиотеки Kotlin/Multiplatform, такие как kotlinx.coroutines, kotlinx.serialization, или ktor-client.

Для использования пакетов JavaScript из npm, Gradle DSL предоставляет функцию npm, которая позволяет указать пакеты, которые вы хотите импортировать из npm. Рассмотрим импорт пакета npm под названием is-sorted.

Соответствующая часть в файле Gradle выглядит следующим образом:

dependencies {
    // ...
    implementation(npm("is-sorted", "1.0.5"))
}

Поскольку модули JavaScript обычно имеют динамическую типизацию, а Kotlin — статически типизированный язык, вам нужен адаптер. В Kotlin такие адаптеры называются внешними объявлениями. Для пакета is-sorted, который предоставляет только одну функцию, это объявление невелико. В папке с исходными кодами создайте новый файл под названием is-sorted.kt, и заполните его следующим содержимым:

@JsModule("is-sorted")
@JsNonModule
external fun <T> sorted(a: Array<T>): Boolean

Обратите внимание, что если вы используете CommonJS в качестве целевой платформы, аннотации @JsModule и @JsNonModule необходимо соответствующим образом скорректировать.

Теперь эту функцию JavaScript можно использовать как обычную Kotlin-функцию. Поскольку мы предоставили информацию о типах в заголовочном файле (в отличие от простого определения типа параметра и возвращаемого значения как dynamic), также доступна надлежащая поддержка компилятора и проверки типов.

console.log("Hello, Kotlin/JS!")
console.log(sorted(arrayOf(1,2,3)))
console.log(sorted(arrayOf(3,1,2)))

Выполняя эти три строки в браузере или Node.js, вывод показывает, что вызов sorted был правильно сопоставлен с функцией, экспортированной пакетом is-sorted.

Hello, Kotlin/JS!
true
false

Поскольку экосистема JavaScript имеет несколько способов экспонирования функций в пакете (например, с помощью именованных или стандартных экспортов), другим пакетам npm может потребоваться немного изменённая структура для их внешних объявлений.

Чтобы узнать больше о написании объявлений, обратитесь к Вызову JavaScript из Kotlin.

Последнее изменение: 11 февраля 2021 г.
Динамический тип Использование кода Kotlin из JavaScript

© 2010–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/docs/using-packages-from-npm.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API