JsExport

Exports top-level declaration on JS platform.

Compiled module exposes declarations that are marked with this annotation without name mangling.

This annotation can be applied to either files or top-level declarations.

It is currently prohibited to export the following kinds of declarations:

  • expect declarations

  • inline functions with reified type parameters

  • suspend functions

  • secondary constructors without @JsName

  • extension properties

  • enum classes

  • annotation classes

Signatures of exported declarations must only contain "exportable" types:

  • dynamic, Any, String, Boolean, Byte, Short, Int, Float, Double

  • BooleanArray, ByteArray, ShortArray, IntArray, FloatArray, DoubleArray

  • Array<exportable-type>

  • Function types with exportable parameters and return types

  • external or @JsExport classes and interfaces

  • Nullable counterparts of types above

  • Unit return type. Must not be nullable

This annotation is experimental, meaning that restrictions mentioned above are subject to change.

Since Kotlin

1.4

Exports top-level declaration on JS platform.

Compiled module exposes declarations that are marked with this annotation without name mangling.

This annotation can be applied to either files or top-level declarations.

It is currently prohibited to export the following kinds of declarations:

  • expect declarations

  • inline functions with reified type parameters

  • suspend functions

  • secondary constructors without @JsName

  • extension properties

  • enum classes

  • annotation classes

Signatures of exported declarations must only contain "exportable" types:

  • dynamic, Any, String, Boolean, Byte, Short, Int, Float, Double

  • BooleanArray, ByteArray, ShortArray, IntArray, FloatArray, DoubleArray

  • Array<exportable-type>

  • Function types with exportable parameters and return types

  • external or @JsExport classes and interfaces

  • Nullable counterparts of types above

  • Unit return type. Must not be nullable

This annotation is experimental, meaning that restrictions mentioned above are subject to change.

Since Kotlin

1.3