スポンサーリンク

Kotlin to Javascript

スポンサーリンク

Reference

最もメインの説明はここ

Set up a Kotlin/JS project | Kotlin

Kotlin/JS projectとされていますが、実質としてKotlin Multiplatformの1プロジェクトとして規格されていますので、最もベーシックなProject Structureは以下が詳しいです

The basics of Kotlin Multiplatform project structure | Kotlin

React + KotlinのTutorial

Set up a Kotlin/JS project | Kotlin

kotlinとjavascriptの型定義の対照表は以下

Use Kotlin code from JavaScript | Kotlin

Kotlin Multiplatform

Kotlin code setから、web (javascript), ios, android等の様々なplatformに使用可能なライブラリへ変換を行います。

Multiplatformは以下のページが詳しい

Get started with Kotlin Multiplatform | Kotlin Multiplatform Development

Sample Project

以下から選択的に作成可能です

Kotlin Multiplatform Wizard | JetBrains
Create your first multiplatform project using the Kotlin Multiplatform wizard for Android, iOS, and Desktop, or use one of the pre-made templates.

KotlinからJavascriptのコードを生成する

上記の機能を使用することで、KotlinからJavascriptを作成し、JavascriptからKotlinライブラリを使用することができます。

以下がProject Structureです。

build/js下に個別パッケージごとに、build/dist下にバンドル化された単一のjavascript codeが生成されます。

build.gradle.ktsは以下です。

plugins {
    kotlin("multiplatform") version "1.9.22"
}

group = "org.example"
version = "1.0-SNAPSHOT"

repositories {
    mavenCentral()
}

kotlin {
    js{
        browser {
        }
        binaries.executable()
        generateTypeScriptDefinitions()
    }
    sourceSets {
        val commonMain by getting {
            dependencies {
                implementation("org.jetbrains.kotlinx:multik-core:0.2.2")
                implementation("org.jetbrains.kotlinx:multik-default:0.2.2")
                implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")
                implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
            }
        }
    }
}

generateTypeScriptDefinitions()を付与することで、Typescriptのためのt.dsを作成することが可能です。

Kotlin/JS IR compiler | Kotlin

また、JavascriptからKotlin Codeを使用するためにはJavascriptに対してexposeする対象を指定する必要があり、以下のように@JsExportアノテーションを付与します。

@OptIn(ExperimentalJsExport::class)
@JsExport
class BSplineFunc {

後は生成されたライブラリを使用したいモジュールにインポートすれば利用することができます

タイトルとURLをコピーしました