Ivan Cagle (IvanEOD)
07/07/2023, 2:27 PMexternal class JavascriptComponent // -- properly defined elsewhere
// declare var Root : JavascriptComponent | any;
external var Root: RootUnion
sealed external class RootUnion
fun RootUnion.asJavascriptComponent(): JavascriptComponent = asDynamic().unsafeCast<JavascriptComponent>()
fun RootUnion.asAny(): Any = asDynamic().unsafeCast<Any>()
Adam S
07/07/2023, 3:18 PMAdam S
07/07/2023, 3:24 PMsealed external interface RootUnion
since an external interface doesn’t existAdam S
07/07/2023, 3:26 PMI’m sorry if I’m not doing it right or broke some universal slack rules....You picked the right channel and you’re on topic blob smile. But could you move your other message into this thread 🧵, so the conversation is grouped?
Ivan Cagle (IvanEOD)
07/07/2023, 3:59 PMIvan Cagle (IvanEOD)
07/07/2023, 4:00 PM@JsName("Root")
external var ExternalRoot: dynamic
val Root by lazy { RootUnion(ExternalRoot) }
class RootUnion(private val input: dynamic) {
fun asJavascriptComponent() = input.unsafeCast<JavascriptComponent>()
fun asAny() = input.unsafeCast<Any>()
}
or
external var Root : dynamic
val RootJavascriptComponent get() = Root.unsafeCast<JavascriptComponent>()
val RootAny get() = Root.unsafeCast<Any>()
Ivan Cagle (IvanEOD)
07/07/2023, 4:01 PMAdam S
07/07/2023, 4:04 PMlazy {}
delegate might be a problem since there’s a performance costs with delegatesIvan Cagle (IvanEOD)
07/07/2023, 4:05 PM