使用伪联合类型 js.Dictionary[js.Any] 时编译失败 |无效的
Compilation failed when using the pseudo-union type js.Dictionary[js.Any] | Null
为什么会有下面的说法
type properties = js.Dictionary[js.Any] | Null
val foo: properties = js.Dictionary("a"-> 1)
报告"type-mismatch"编译错误?
ScalaFiddle.scala:6: error: type mismatch;
found : js.this.Dictionary[scala.this.Int]
required: ScalaFiddle.this.properties
(which expands to) js.this.$bar[js.this.Dictionary[js.this.Any],scala.this.Null]
val foo: properties = js.Dictionary("a"-> 1)
伪联合类型 properties 是使用 scala-js-ts-importer[=23= 获得的 Scala.js 门面的一部分].
您的问题在于 js.Dictionary("a" -> 1)
导致 js.Dictionary[Int]
。
因为 js.Dictionary[js.Any] <: js.Dictionary[js.Any] | Null
根据定义为真,
您可以向 foo
提供 js.Dictionary[js.Any]
,但 js.Dictionary[Int] <: js.Dictionary[js.Any]
是错误的。
要解决此问题,您必须明确定义类型:
val foo: properties = js.Dictionary[js.Any]("a"-> 1)
希望对您有所帮助。
为什么会有下面的说法
type properties = js.Dictionary[js.Any] | Null
val foo: properties = js.Dictionary("a"-> 1)
报告"type-mismatch"编译错误?
ScalaFiddle.scala:6: error: type mismatch;
found : js.this.Dictionary[scala.this.Int]
required: ScalaFiddle.this.properties
(which expands to) js.this.$bar[js.this.Dictionary[js.this.Any],scala.this.Null]
val foo: properties = js.Dictionary("a"-> 1)
伪联合类型 properties 是使用 scala-js-ts-importer[=23= 获得的 Scala.js 门面的一部分].
您的问题在于 js.Dictionary("a" -> 1)
导致 js.Dictionary[Int]
。
因为 js.Dictionary[js.Any] <: js.Dictionary[js.Any] | Null
根据定义为真,
您可以向 foo
提供 js.Dictionary[js.Any]
,但 js.Dictionary[Int] <: js.Dictionary[js.Any]
是错误的。
要解决此问题,您必须明确定义类型:
val foo: properties = js.Dictionary[js.Any]("a"-> 1)
希望对您有所帮助。