我在使用 ScalaJS 時出現不一致的錯誤。這是一個最小的例子:字典變數的大小和內容不一致。
def A(mapping: js.Dictionary[String]): Unit = {
dom.console.log(mapping)
dom.console.log(mapping.size)
}
我使用 fastOptJS 鏈接 IR。在 html 的驅動程式代碼中,我有
const colorSetting = new Map([
["1", "black"]
]);
ScalaJSExample.A(colorSetting)
在控制臺中,第一行正確列印了變數的內容,
"Map {"1" => "black"}"
但是第二行列印0。我也嘗試過交換兩行的位置,但結果是一樣的。任何方法,例如 .foreach 或 for (x <- mapping) 都將變數映射視為空。
任何建議為什么會這樣?我正在使用 Scala 2.12.8,ScalaJS 1.7.1。
謝謝!
uj5u.com熱心網友回復:
Ajs.Dictionary代表一個 POJO(普通的舊 JavaScript 物件),其中元素是欄位。但是您正在new Map()向它傳遞一個 JS ,它不是一個 POJO——它是一個Map. 表示 JS Map 的正確型別是js.Map.
要么將字典傳遞給ScalaJSExample.A,如下所示:
const colorSetting = {
"1": "black"
};
ScalaJSExample.A(colorSetting)
或在 Scala.js 代碼中宣告mapping為 a js.Map:
def A(mapping: js.Map[String, String]): Unit = {
dom.console.log(mapping)
dom.console.log(mapping.size)
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/357427.html
