我创建了很多非本地 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 能做到这一点吗?如果是这样,是否有类似的例子?或者这应该在某种预处理器中处理。