JsExternalInheritorsOnly
@ExperimentalStdlibApi @Target([AnnotationTarget.CLASS]) annotation class JsExternalInheritorsOnly
При размещении на внешнем интерфейсе или классе, требует, чтобы все его дочерние интерфейсы, классы и объекты также были внешними.
Компилятор меняет идентификаторы функций и свойств из не-внешних интерфейсов и классов, и не меняет их для внешних. Требование, чтобы наследники внешних интерфейсов и классов также были внешними, необходимо для предотвращения неочевидных ошибок, когда именование идентификаторов в наследнике не соответствует именованию в базовом классе или интерфейсе.
Пример:
// From kotlin-wrappers
external interface Props {
var key: Key?
}
// User code
@OptIn(ExperimentalStdlibApi::class)
@JsExternalInheritorsOnly
external interface LayoutProps : Props {
var layout: Layout?
}
external interface ComponentProps : LayoutProps // OK
external interface ComponentA : ComponentProps // OK
interface ComponentB : ComponentProps // Compilation error!
Эта аннотация экспериментальная, что означает, что упомянутые выше ограничения могут быть изменены.
Конструкторы
<init>
При размещении на внешнем интерфейсе или классе, требует, чтобы все его дочерние интерфейсы, классы и объекты также были внешними.
JsExternalInheritorsOnly()
© 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-inheritors-only/index.html