Another way is just to iterate over the key-value pairs of a JS object:
fun entriesOf(jsObject: dynamic): List<Pair<String, Any?>> =
(js("Object.entries") as (dynamic) -> Array<Array<Any?>>)
.invoke(jsObject)
.map { entry -> entry[0] as String to entry[1] }
fun mapOf(jsObject: dynamic): Map<String, Any?> =
entriesOf(jsObject).toMap()