Tengo un error inconsistente al usar ScalaJS. Aquí hay un ejemplo mínimo: el tamaño y el contenido de una variable de diccionario son inconsistentes.
def A(mapping: js.Dictionary[String]): Unit = { dom.console.log(mapping) dom.console.log(mapping.size) }Enlazo los IR usando fastOptJS. En el código del controlador en html, tengo
const colorSetting = new Map([ ["1", "black"] ]); ScalaJSExample.A(colorSetting)En la consola, la primera línea imprime correctamente el contenido de la variable,
"Map {"1" => "black"}"pero la segunda línea imprime 0. También intenté cambiar la posición de las dos líneas, pero el resultado es el mismo. Todos los métodos como .foreach o for (x <- mapeo) tratan el mapeo de variables como vacío.
¿Alguna sugerencia de por qué este es el caso? Estoy usando Scala 2.12.8, ScalaJS 1.7.1.
¡Gracias!
Un js.Dictionary representa un POJO (objeto de JavaScript simple y antiguo) donde los elementos son campos. Pero le está pasando un new Map() de JS, que no es un POJO, es un Map . El tipo correcto para representar un mapa JS es js.Map .
Pase un diccionario a ScalaJSExample.A , de la siguiente manera:
const colorSetting = { "1": "black" }; ScalaJSExample.A(colorSetting) o declare el mapping como js.Map en el código Scala.js:
def A(mapping: js.Map[String, String]): Unit = { dom.console.log(mapping) dom.console.log(mapping.size) }