我正在编写一个用Scala.js编译的函数,它应该接受任何随机的JavaScript对象。
例如:
// This has been transpiled using Scala.js
var my_service = new com.myself.Service();
// This is plain JavaScript
var result1 = service({ hello: "yolo" });
var result2 = service({ whatever: "ok", really: { yes: "right", no: "don't" } });
但是,我找不到与之匹配的输入类型。
注意(如果它有助于给出答案的方向):这些对象在现实生活中具有预期的模式,但它不能被创建为从Scala.js生成的JS对象,因为它来自另一个被消耗的服务。
答案 0 :(得分:1)
由于对象具有预期的模式,因此最容易定义外观类型:
@js.native
trait Args extends js.Object {
val hello: js.UndefOr[String]
val whatever: js.UndefOr[String]
val really: js.UndefOr[ReallyArgs]
}
@js.native
trait Really extends js.Object {
val yes: String
val no: String
}
def myMethod(args: Args): Unit = {
println(args.hello)
println(args.really.map(_.yes))
}