JavaScript Reflection
In Kotlin compiled to JavaScript, there’s a property available
on any object called jsClass
which returns a JsClass
instance. JsClass
currently can do nothing more than providing
a (non-qualified) name of the class. However, the JsClass
instance itself is a reference to the constructor function.
This can be used to interoperate with JS functions that expect a reference to a constructor.
To get a reference to a class, you can use the ::class
syntax. Full reflection API is currently not supported
in Kotlin for JavaScript; the only available properties are .simpleName
which returns the name of the class
and .js
which returns the corresponding JsClass
.
Examples:
class A
class B
class C
inline fun <reified T> foo() {
println(jsClass<T>().name)
}
println(A().jsClass.name) // prints "A"
println(B::class.simpleName) // prints "B"
println(B::class.js.name) // prints "B"
foo<C>() // prints "C"