我有一个我想从JS调用的ScalaJS函数,它有一个Option [String]参数。我无法弄清楚如何从JS创建一些[String]和None [String]。
答案 0 :(得分:6)
简短的回答:你做不到。但是,您的问题有两种解决方案。
Some
并检索None
(次优)在Scala.js代码库中添加这样的对象:
package some.pack
@JSExport
object OptionFactory {
@JSExport
def none(): None.type = None
@JSExport
def some[A](value: A): Some[A] = Some(value)
}
您现在可以使用JS的工厂来创建选项:
var none = some.pack.OptionFactory.none()
var some = some.pack.OptionFactory.some(5)
js.UndefOr
(推荐)您可以直接从Scala.js类公开JS友好的API,而不是强制JS操纵Option
。假设您要公开的函数类似于:
def foo(opt: Option[Int]): Unit = ???
您可以改为或者另外导出以下JS友好版本:
@JSExport
def foo(opt: js.UndefOr[Int]): Unit = foo(opt.toOption)
这将允许JS只使用undefined
None
和Some[Int]
的任何整数,例如:
scalaJSObj.foo(undefined)
scalaJSObj.foo(5)