如果 类,我如何将 scala seq 导出到 js.Array

How can I export scala seq to js.Array in case classes

这个问题是与

相关的问题

如果我有 class 形式的案例

case class Foo(var id : Long,var title: Seq[String])

即它包含一系列数据,是否有任何设置可以导出为 js.Array ?

在只有 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。然后您仍然可以从共享源使用它。

我一般使用 upickle,我的方法是在共享项目中使用泛型 IE。

case class Foo[S[_]](var id : Long, var title: S[String])

在 Scala JVM 中,我将案例 class 腌制为表单的对象

Foo(id, Seq(title1, title2, ...))

它是一个 Foo[Seq] 类型的对象,在 scala JS 中我将该对象腌制为 Foo[js.Array].