此问题是与How to export properties of shared case classes
相关的问题如果我有一个
形式的案例类case class Foo(var id : Long,var title: Seq[String])
即。它包含一系列数据,是否有任何设置要导出为js.Array
?
答案 0 :(得分:0)
在Scala.js专用项目中,只需执行以下操作:
case class Foo(var id: Long, var title: Seq[String]) {
@JSExport("title")
protected def jsTitle: js.Array[String] =
title.toJSArray
@JSExport("title")
protected def jsTitle_=(v: js.Array[string]): Unit =
title = v.toSeq
}
但是,这将拒绝在共享源中进行编译,因为Scala / JVM不了解js.Array
。
我担心你的问题没有样板解决方案。最简单的解决方案是在项目的JVM和JS部分中单独声明Foo
。然后,您仍然可以从共享源中使用它。
答案 1 :(得分:0)
我总体上使用了upickle,我走的方式是在共享项目中使用泛型 即
case class Foo[S[_]](var id : Long, var title: S[String])
在scala JVM中的我将case类挑选为表单的对象
Foo(id, Seq(title1, title2, ...))
它是Foo[Seq]
类型的对象,在scala JS中我将对象pickle为
Foo[js.Array]
。