Скажем, я хочу создать следующий 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, это вызывает предупреждения компилятора:
Members of traits, classes and objects extending js.Any may only contain members that call js.native. This will be enforced in 1.0.
val x = "a"
...
Могу ли я продолжить этот подход в будущем?
Пробовал переделать на Скалафиддл.
Исключение выглядит немного иначе, но при выполнении предложенных решений окончательное решение без предупреждений выглядит так:
import scala.scalajs.js.annotation.ScalaJSDefined
@ScalaJSDefined
object MyObj extends js.Object {
val x = "a"
val y = "b"
}
println(MyObj.x + MyObj.y)
Здесь Скалафиддл.
Я думаю, это должно работать так же, только без аннотации
@js.native
.