Spec-Zone.ru › Kotlin 2

JsExternalArgument

kotlin-stdlib/kotlin.js/JsExternalArgument

Версия Kotlin: 1.9

@ExperimentalStdlibApi
@Target(allowedTargets = [AnnotationTarget.VALUE_PARAMETER])
annotation class JsExternalArgument

При размещении на параметре функции требует, чтобы тип передаваемого аргумента был внешним.

Компилятор преобразует идентификаторы свойств из невнешних интерфейсов и классов, но не преобразует идентификаторы из внешних. Требование, чтобы тип передаваемого аргумента был внешним, необходимо для предотвращения неочевидных ошибок, возникающих, когда идентификатор имеет нестабильное и непредсказуемое имя в сгенерированном коде JS.

Пример:

@OptIn(ExperimentalStdlibApi::class)
fun extractUuid(@JsExternalArgument x: dynamic) = x.uuid as String

external interface User {
val uuid: String
}

interface Owner {
val uuid: String
}

fun checkUser(user: User, owner: Owner): Boolean {
val userUuid = extractUuid(user) // OK
val ownerUuid = extractUuid(owner) // Compilation error! Possible bug
return userUuid == ownerUuid
}

Эта аннотация является экспериментальной, поэтому указанные выше ограничения могут измениться.

© 2010–2026 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/core/kotlin-stdlib/kotlin.js/-js-external-argument/index.html

Spec-Zone.ru

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