我正在尝试扩展Navigator该oscpu属性。这个问题已经在这里得到了回答,并且按照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]
Run Code Online (Sandbox Code Playgroud)
您可以将 a 转换js.UndefOr[A]为Option[A]with x.toOption。
相反的转换也可以作为x.orUndefined,但需要以下导入:
import scala.scalajs.js.JSConverters._
Run Code Online (Sandbox Code Playgroud)
这记录在https://www.scala-js.org/doc/interoperability/types.html