首页 > 解决方案 > scalajs:使用 js.Dynamic.literal 调用 javascript 函数可以工作,但不能使用 js.Object

问题描述

我正在为一个需要对象参数的函数编写一个 scalajs 外观。简化,它看起来像这样:

通知.js

function notification(options) {
    console.log("options", options);
}

例子.scala:

import scala.scalajs.js

class Options(val message: String, val timeout: js.UndefOr[Int] = js.undefined) extends js.Object

@js.native
@js.annotation.JSGlobalScope
object DOMGlobalScope extends js.Object {
  def notification(options: js.Object): Unit = js.native
}

DOMGlobalScope.notification(js.Dynamic.literal(message = "hello", timeout = 100))
//  the browser prints: options {timeout: 100}

DOMGlobalScope.notification(new Options(message = "hello", timeout = 100))
//  the browser prints: options a {timeout: 100}  << what is this a?

我正在立面的图书馆,如果我使用它可以工作js.Dynamic.literal,但如果我使用它就不行new Options。这与那个有关a吗?

我该如何解决这个问题?

而且,为什么我不能使用案例类选项?

标签: scala.js

解决方案


推荐阅读