如何映射js.UndefOr [T]< - >在Scala.js中使用js.native选项[T]?

时间:2017-04-30 10:16:57

标签: scala scala.js

我正在尝试使用Navigator属性扩展oscpu。这个问题已经回答here,并且实施工作完全符合Justin du Coeur的建议。问题是,当我在Firefox以外的浏览器中执行代码时,我得到一个UndefinedBehaviorError异常,这是合乎逻辑的,因为此属性仅存在于Firefox中。

但是,我只想使用Option而不是接收例外。因此,如果它不存在,则为None,如果存在,我将获得Some("OSCPU info")

我该如何使这项工作?我尝试了以下方法,但我不确定如何转换为Option

@js.native
trait OSCPUNavigator extends js.Object {
  def oscpu: js.UndefOr[String] = js.native
}
implicit def toOSCPUNavigator(n: Navigator): OSCPUNavigator =
    n.asInstanceOf[OSCPUNavigator]

1 个答案:

答案 0 :(得分:3)

您可以使用js.UndefOr[A]Option[A]转换为x.toOption

相反的转换也可以作为x.orUndefined,但需要以下导入:

import scala.scalajs.js.JSConverters._

这在https://www.scala-js.org/doc/interoperability/types.html

中有记录
相关问题