object anónimo javascript en kotlin

cómo crear un object anónimo JavaScript en kotlin? quiero crear exactamente este object para pasarlo a la aplicación nodejs

var header = {“content-type”:”text/plain” , “content-length” : 50 ...} 

Solutions Collecting From Web of "object anónimo javascript en kotlin"

Soluciones posibles:

1) con la function js :

 val header = js("({'content-type':'text/plain' , 'content-length' : 50 ...})") 

nota: los paréntesis son obligatorios

2) con dynamic :

 val d: dynamic = object{} d["content-type"] = "text/plain" d["content-length"] = 50 

3) con js + dynamic :

 val d = js("({})") d["content-type"] = "text/plain" d["content-length"] = 50 

4) con statement nativa:

 native class Object { nativeGetter fun get(prop: String): dynamic = noImpl nativeSetter fun set(prop: String, value: dynamic) {} } fun main(args : Array<String>) { var o = Object() o["content-type"] = "text/plain" o["content-length"] = 50 } 

Una solución más posible:

 object { val `content-type` = "text/plain" val `content-length` = 50 } 

Parece que ya no funciona con los nombres de variables escapadas.

Soy un novato de Kotlin (aunque no soy un desarrollador novato), amplié ligeramente la respuesta de @bashor a algo que parece más claro para las keys que son identificadores de Java válidos, pero todavía permite las que no lo son. Lo probé con Kotlin 1.0.1.

 @native("Object") open class Object { } fun jsobject(init: dynamic.() -> Unit): dynamic { return (Object()).apply(init) } header = jsobject { validJavaIdentifier = 0.2 this["content-type"] = "text/plain" this["content-length"] = 50 } 

Aquí hay una function auxiliar para inicializar un object con una syntax lambda

 inline fun jsObject(init: dynamic.() -> Unit): dynamic { val o = js("{}") init(o) return o } 

Uso:

 jsObject { foo = "bar" baz = 1 } 

Emitido código javascript

 var o = {}; o.foo = 'bar'; o.baz = 1;