JsExternalArgument
@ExperimentalStdlibApi @Target([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
}
Эта аннотация является экспериментальной, что означает, что перечисленные выше ограничения могут быть изменены.
Конструкторы
<init>
При размещении на параметре функции требует, чтобы тип переданного аргумента был внешним.
JsExternalArgument()
© 2010–2023 JetBrains s.r.o. and Kotlin Programming Language contributors
Licensed under the Apache License, Version 2.0.
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.js/-js-external-argument/index.html