我有一个ScalaJS函数,我想从JS调用,它有一个Option [String]参数.我无法弄清楚如何从JS创建一些[String]和None [String].
简短的回答:你做不到.但是,您的问题有两种解决方案.
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)
}
Run Code Online (Sandbox Code Playgroud)
您现在可以使用JS的工厂来创建选项:
var none = some.pack.OptionFactory.none()
var some = some.pack.OptionFactory.some(5)
Run Code Online (Sandbox Code Playgroud)
js.UndefOr(推荐)Option您可以直接从Scala.js类公开JS友好的API,而不是强制JS操纵s.假设您想要公开的函数是这样的:
def foo(opt: Option[Int]): Unit = ???
Run Code Online (Sandbox Code Playgroud)
您可以改为或者另外导出以下JS友好版本:
@JSExport
def foo(opt: js.UndefOr[Int]): Unit = foo(opt.toOption)
Run Code Online (Sandbox Code Playgroud)
这将允许JS简单地使用undefinedfor None和任何整数Some[Int],例如:
scalaJSObj.foo(undefined)
scalaJSObj.foo(5)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
558 次 |
| 最近记录: |