Alexander Weickmann
09/30/2020, 3:29 PMturansky
09/30/2020, 3:43 PMAlexander Weickmann
09/30/2020, 3:47 PMAlexander Weickmann
09/30/2020, 3:47 PMturansky
09/30/2020, 3:54 PMdata class D(val a: Int) {
@JsName("copy")
fun jsCopy(val a: Int?): D = copy(a = a)
}
turansky
09/30/2020, 3:55 PMturansky
09/30/2020, 3:56 PMturansky
09/30/2020, 8:05 PMturansky
09/30/2020, 8:15 PMAlexander Weickmann
10/01/2020, 8:50 AMturansky
10/01/2020, 8:57 AMAlexander Weickmann
10/01/2020, 9:43 AM@Suppress("UnsafeCastFromDynamic")
fun <T> T.jsCopy(options: dynamic.() -> Unit): T {
val o = this
val copyObj = js("Object.assign({}, o)")
val optionsObj = jsObject(options)
Object.keys(optionsObj).forEach { key ->
val descriptor = Object.getOwnPropertyDescriptor<RProps>(optionsObj, key)
Object.defineProperty(copyObj, key, descriptor)
undefined
}
return copyObj as T
}
inline fun jsObject(init: dynamic.() -> Unit): dynamic {
val o = js("{}")
init(o)
return o
}
Alexander Weickmann
10/01/2020, 9:47 AMturansky
10/01/2020, 10:16 AMturansky
10/01/2020, 10:17 AMAlexander Weickmann
10/02/2020, 7:17 AMturansky
10/02/2020, 7:43 AMDynamicObjectParser
for converting Data classes to JSO, on JS side I use spread operator - standard JS functionality.turansky
10/02/2020, 3:17 PM