, 우리는이 구조가 :동적 인 Kotlin/Js 객체를 일반 자바 스크립트 객체로 변환하는 간단한 방법은 무엇입니까? 예를 들어
data class Item(
val city: String,
val name: String
)
val structure = mapOf("items" to listOf(
Item("NY", "Bill"),
Item("Test", "Test2"))
)
를 그리고 자바 스크립트에서이 객체를 얻으려면 :
우리가 자바 스크립트와 같은 구조로dynamic
유형 코 틀린에서
map
을 변환 할 수있는 방법
var structure = {
"items": [
{
"city": "NY",
"name": "Bill"
},
{
"city": "Test",
"name": "Test2"
}
]
}
?
내가에만이 명시 적 방법을 찾을 :
fun Map<String, Any>.toJs(): dynamic {
val result: dynamic = object {}
for ((key, value) in this) {
when (value) {
is String -> result[key] = value
is List<*> -> result[key] = (value as List<Any>).toJs()
else -> throw RuntimeException("value has invalid type")
}
}
return result
}
fun List<Any>.toJs(): dynamic {
val result: dynamic = js("[]")
for (value in this) {
when (value) {
is String -> result.push(value)
is Item -> result.push(value.toJs())
else -> throw RuntimeException("value has invalid type")
}
}
return result
}
fun Item.toJs(): dynamic {
val result: dynamic = object {}
result["city"] = this.city
result["name"] = this.name
return result
}
나는 그 직렬화/역 직렬화으로도이 작업을 수행 할 수 있습니다 알고 있지만, 나는 그것이 느린 일부 오버 헤드 것이라 생각합니다.
누구나 쉽게 Kotlin을 비밀리에 변환하는 방법을 알고 있습니까 object
일반 Javascript object
(dynamic
Kotlin 유형)?
어쩌면 .asDynamic()? – deviant
'.asDynamic'은이 값을 '동적 타입'의 값으로 재 해석합니다. – kurt