Spec-Zone.ru › Kotlin 2

JsExternalInheritorsOnly

kotlin-stdlib/kotlin.js/JsExternalInheritorsOnly

Since Kotlin: 1.9

@ExperimentalStdlibApi
@Target(allowedTargets = [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!

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

© 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-inheritors-only/index.html

Spec-Zone.ru

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