在惯用JavaScript中,让函数接受"选项对象"作为最后一个参数是很常见的.这是您通常放置所有选项/很少使用的参数的地方,例如
jQuery.ajax({
url: "http://www.example.com/foo",
success: function() {
..
}
})
Run Code Online (Sandbox Code Playgroud)
Scala.JS的当前文档使用Scala特征来推荐表示选项对象,但是当您必须创建选项时会导致问题,因为您无法将匿名类传递给JavaScript代码.
如何从Scala代码创建这样的选项对象?
gzm*_*zm0 12
我们建议如下(如果您选择创建facade-types):
trait AjaxOptions extends js.Object {
val url: String = js.native
val success: js.Function0[Unit] = js.native
}
object AjaxOptions {
def apply(url: String, success: js.Function0[Unit]): AjaxOptions = {
js.Dynamic.literal(url = url, success = success).asInstanceOf[AjaxOptions]
}
}
Run Code Online (Sandbox Code Playgroud)
优点是类型不安全的转换包含在一个位置.此外,如果你决定添加/删除字段AjaxOptions,你(希望)会想到也适应同伴的apply方法.因此,typer将通知您必须更改调用的位置(而不是仅将新字段设置为undefined).
有关更多内容,请参阅为API包装器实例化js.Object的建议方法.
| 归档时间: |
|
| 查看次数: |
1730 次 |
| 最近记录: |