在对象或类中表示js.Dynamic

时间:2018-07-30 11:31:20

标签: scala.js

说我想生成以下javascript:

var myObj = { x: 'a', y: 'b' }

我可以通过调用js.Dynamic.literal来做到这一点:

val myObj = js.Dynamic.literal(x = "a", y = "b")

但是我也可以在一个类中表示这种信息:

@js.native
object MyObj extends js.Object {
    val x = "a"
    val y = "b"
}

val myObj = MyObj

但是自从我升级到6.21以来,这会导致编译器警告:

  

扩展js的特征,类和对象的成员。   包含调用js.native的成员。这将在1.0中强制执行。

     

val x =“ a”

     

...

我可以继续这种方法吗?

1 个答案:

答案 0 :(得分:0)

我尝试在Scalafiddle上重做。

该异常看起来有些不同,但是按照建议进行操作,没有警告的最终解决方案看起来像这样:

import scala.scalajs.js.annotation.ScalaJSDefined

@ScalaJSDefined
object MyObj extends js.Object {
    val x = "a"
    val y = "b"
}

println(MyObj.x + MyObj.y)

Scalafiddle