【发布时间】:2017-06-07 06:27:59
【问题描述】:
我正在尝试为 jQuery 插件 (https://github.com/devbridge/jQuery-Autocomplete) 编写外观。 In 包括一些回调,这些回调传递了我建模为的对象:
@js.native
trait AutocompleteSuggestion extends js.Object {
val value: String = js.native
val data : js.Any = js.native
}
库需要访问value; data 供我使用。我创建对象,将其提供给库,然后它作为回调的参数将其返回给我。
创建这些对象我能做的最好的事情是
object AutocompleteSuggestion {
def apply[T](value: String, data: T) = {
literal(value = value, data = data.asInstanceOf[js.Any]).asInstanceOf[AutocompleteSuggestion]
}
}
传递这些对象之一的回调通常最终看起来像
def onSelect(suggestion: AutocompleteSuggestion): Unit = {
val cb = suggestion.data.asInstanceOf[CourseBasic]
// do something with the data
}
关于如何改进这一点有什么建议吗?特别是感觉我在做很多演员。我在https://www.scala-js.org/doc/interoperability/facade-types.html 的示例中没有看到这一点——但这些示例也刻意避免使用原始类型以外的任何内容。
【问题讨论】:
标签: scala.js