簡體   English   中英

如何在Scala.js中將js.UndefOr [T] <–> Option [T]與js.native映射?

[英]How to map js.UndefOr[T] <–> Option[T] with js.native in Scala.js?

我正在嘗試使用oscpu屬性擴展Navigator 這個問題已經在這里得到了回答並且實現正如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]

您可以將轉換js.UndefOr[A]一個Option[A]x.toOption

也可以使用x.orUndefined相反的轉換,但需要進行以下導入:

import scala.scalajs.js.JSConverters._

https://www.scala-js.org/doc/interoperability/types.html中有記錄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM