【问题标题】:Scala.js union typesScala.js 联合类型
【发布时间】:2016-12-07 06:24:29
【问题描述】:

我正在为 Scala.js (v0.6.13) 使用 HighCharts 外观,并且在我的图表上配置十字准线时遇到了困难。当我看到 Scala.js 联合类型声明时,我的理解是:

val crosshair: UndefOr[|[Boolean, CleanJsObject[YAxisCrosshair]]]

十字准线可以是布尔值还是 YAxisCrosshair?

如果是这样,我的十字准线设置为 true 的声明编译正确:

override val yAxis: Cfg[YAxis] = YAxis(
  gridLineWidth = 0,
  minorGridLineWidth = 0,
  opposite = false,
  labels = YAxisLabels(
    align = "right",
    format = "{value:.8f}"
  ),
  crosshair = true
) 

但是当我将十字准线设置为 YAxisCrosshair 时,我的项目无法编译。

override val yAxis: Cfg[YAxis] = YAxis(
  gridLineWidth = 0,
  minorGridLineWidth = 0,
  opposite = false,
  labels = YAxisLabels(
    align = "right",
    format = "{value:.8f}"
  ),
  crosshair = YAxisCrosshair(
    snap = false,
    label = YAxisCrosshairLabel(
      format = "{value:.8f}"
    )
  )
)

后面的结果是:

type mismatch;
  found   : com.highstock.config.YAxisCrosshair
  required: scala.scalajs.js.UndefOr[scala.scalajs.js.|        [Boolean,com.highcharts.CleanJsObject[com.highstock.config.YAxisCrosshair]]]

我在这里缺少什么?

【问题讨论】:

    标签: scala highcharts scala.js


    【解决方案1】:

    我想我已经找到了答案。这是需要做的:

    override val yAxis: Cfg[YAxis] = YAxis(
      gridLineWidth = 0,
      minorGridLineWidth = 0,
      opposite = false,
      labels = YAxisLabels(
        align = "right",
        format = "{value:.8f}"
      ),
      crosshair = YAxisCrosshair(
        snap = false,
        label = YAxisCrosshairLabel(
          format = "{value:.8f}"
        )
      ): CleanJsObject[YAxisCrosshair]
    )
    

    【讨论】:

    • 您可能想以某种方式突出显示 : CleanJSObject[YAxisCrosshair] ;) 但是,是的,这就是需要做的。
    猜你喜欢
    • 1970-01-01
    • 2020-08-04
    • 1970-01-01
    • 2018-07-29
    • 2019-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多