Kotlin Standard Library for experimental WebAssembly JS platform providing core functionality and JavaScript interoperability
—
Bidirectional conversion functions between Kotlin and JavaScript types for seamless data exchange between Kotlin/Wasm and JavaScript.
Convert between Kotlin Boolean and JavaScript boolean types.
/**
* Convert Kotlin Boolean to JsBoolean
* @return JsBoolean JavaScript boolean representation
*/
fun Boolean.toJsBoolean(): JsBoolean
/**
* Convert JsBoolean to Kotlin Boolean
* @return Boolean Kotlin boolean representation
*/
fun JsBoolean.toBoolean(): BooleanUsage Example:
val kotlinBool = true
val jsBool: JsBoolean = kotlinBool.toJsBoolean()
val backToKotlin: Boolean = jsBool.toBoolean()Convert Kotlin String to JavaScript string type.
/**
* Convert Kotlin String to JsString
* @return JsString JavaScript string representation
*/
fun String.toJsString(): JsString
/**
* Convert JsString to Kotlin String
* @return String Kotlin string representation
*/
fun JsString.toString(): StringUsage Example:
val kotlinString = "Hello, World!"
val jsString: JsString = kotlinString.toJsString()
val backToKotlin: String = jsString.toString()Convert between Kotlin numeric types and JavaScript number.
/**
* Convert Kotlin Double to JsNumber
* @return JsNumber JavaScript number representation
*/
fun Double.toJsNumber(): JsNumber
/**
* Convert Kotlin Int to JsNumber
* @return JsNumber JavaScript number representation
*/
fun Int.toJsNumber(): JsNumber
/**
* Convert JsNumber to Kotlin Double
* @return Double Kotlin double representation
*/
fun JsNumber.toDouble(): Double
/**
* Convert JsNumber to Kotlin Int
* @return Int Kotlin int representation
*/
fun JsNumber.toInt(): IntUsage Examples:
// Double conversion
val kotlinDouble = 3.14159
val jsNumber: JsNumber = kotlinDouble.toJsNumber()
val backToDouble: Double = jsNumber.toDouble()
// Int conversion
val kotlinInt = 42
val jsNumberFromInt: JsNumber = kotlinInt.toJsNumber()
val backToInt: Int = jsNumberFromInt.toInt()Convert between Kotlin Long and JavaScript bigint.
/**
* Convert Kotlin Long to JsBigInt
* @return JsBigInt JavaScript bigint representation
*/
fun Long.toJsBigInt(): JsBigInt
/**
* Convert JsBigInt to Kotlin Long
* @return Long Kotlin long representation
*/
fun JsBigInt.toLong(): LongUsage Example:
val kotlinLong = 9223372036854775807L // Long.MAX_VALUE
val jsBigInt: JsBigInt = kotlinLong.toJsBigInt()
val backToLong: Long = jsBigInt.toLong()Convert between Kotlin collections and JavaScript arrays.
/**
* Convert Kotlin Array to JsArray
* @return JsArray<T> JavaScript array representation
*/
fun <T> Array<T>.toJsArray(): JsArray<T>
/**
* Convert Kotlin List to JsArray
* @return JsArray<T> JavaScript array representation
*/
fun <T> List<T>.toJsArray(): JsArray<T>
/**
* Convert JsArray to Kotlin Array
* @return Array<T> Kotlin array representation
*/
fun <T> JsArray<T>.toArray(): Array<T>
/**
* Convert JsArray to Kotlin List
* @return List<T> Kotlin list representation
*/
fun <T> JsArray<T>.toList(): List<T>Usage Examples:
// Array conversion
val kotlinArray = arrayOf("apple", "banana", "cherry")
val jsArray: JsArray<String> = kotlinArray.toJsArray()
val backToArray: Array<String> = jsArray.toArray()
// List conversion
val kotlinList = listOf("red", "green", "blue")
val jsArrayFromList: JsArray<String> = kotlinList.toJsArray()
val backToList: List<String> = jsArrayFromList.toList()Convert Kotlin objects to JavaScript references for safe object passing.
/**
* Convert any Kotlin object to JsReference
* @return JsReference<T> JavaScript reference to the Kotlin object
*/
fun <T : Any> T.toJsReference(): JsReference<T>
/**
* Retrieve original Kotlin value from JsReference
* @return T The original Kotlin value
*/
fun <T> JsReference<T>.get(): TUsage Example:
data class User(val name: String, val age: Int)
val user = User("Alice", 25)
val jsRef: JsReference<User> = user.toJsReference()
// Later, retrieve the original object
val retrievedUser: User = jsRef.get()
println("${retrievedUser.name}, ${retrievedUser.age}") // Alice, 25Convert JavaScript exceptions to Kotlin exceptions.
/**
* For a JsAny value caught in JS, returns corresponding Throwable if thrown from Kotlin, null otherwise
* @return Throwable? Corresponding Throwable or null
*/
fun JsAny.toThrowableOrNull(): Throwable?Usage Example:
try {
// Some operation that might throw JavaScript exception
js("throw new Error('JavaScript error')")
} catch (jsError: JsAny) {
val kotlinException = jsError.toThrowableOrNull()
if (kotlinException != null) {
println("Caught Kotlin exception: ${kotlinException.message}")
} else {
println("Caught JavaScript exception: $jsError")
}
}// Converting complex nested structures
data class ApiResponse(val data: List<String>, val success: Boolean)
val response = ApiResponse(listOf("item1", "item2"), true)
// Convert to JavaScript-friendly format
val jsData = response.data.map { it.toJsString() }.toJsArray()
val jsResponse = js("""({
data: arguments[0],
success: arguments[1]
})""") as JsAny
// Function parameters: jsData, response.success.toJsBoolean()// Prepare data for JavaScript API calls
val formData = mapOf(
"username" to "alice",
"email" to "alice@example.com",
"age" to 25
)
// Convert for JavaScript consumption
val jsFormData = js("({})") as JsAny
formData.forEach { (key, value) ->
when (value) {
is String -> js("arguments[0][arguments[1]] = arguments[2]")(jsFormData, key, value.toJsString())
is Int -> js("arguments[0][arguments[1]] = arguments[2]")(jsFormData, key, value.toJsNumber())
is Boolean -> js("arguments[0][arguments[1]] = arguments[2]")(jsFormData, key, value.toJsBoolean())
}
}Install with Tessl CLI
npx tessl i tessl/maven-org-jetbrains-kotlin--kotlin-stdlib-wasm-js