0

我创建了很多非本地 JS 特征实例作为 javascript 函数的参数

trait ElementOpts extends js.Object {
  val prop1: js.UndefOr[String] = js.undefined
  // another 10-15 vals
}

创建实例:

createElement(new ElementOpts {
  override val prop1 = "value1"
  override val prop2 = "value2" 
  // several more, maybe not *all* possible vals
})

但是,在使用覆盖值等定义这些时有很多打字噪音。

最好只键入一个键值对列表并将其转换为经过类型检查的特征,这样您就不会意外添加特征中未定义的 val:

lit[ElementOpts](prop1="value1",prop2="value2")

并将其转换为上述“新 ElementOpts”语法。我使用“lit”来暗示 javascript 文字对象。

Scalameta 能做到这一点吗?如果是这样,是否有类似的例子?或者这应该在某种预处理器中处理。

4

1 回答 1

0

ElementOptsvars 而不是s定义你val的,然后你可以简单地做:

createElement(new ElementOpts {
  prop1 = "value1"
  prop2 = "value2"
  // several more, maybe not *all* possible vars
})
于 2018-02-10T08:02:39.767 回答