我有一个类似于此
的结构的库class Foo {
bar(someArgument){
const baz = {"foobarbaz" : someArgument}
Object.assign(this, baz)
}
}
用意与此类似
var foo = new Foo
foo.bar(myArgument)
我如何围绕这个写一个立面?
答案 0 :(得分:1)
bar
中的JavaScript说明:
const baz = {"foobarbaz" : someArgument};
Object.assign(this, baz);
基本等同于
this.foobarbaz = someArgument;
因此,您只需输入Foo
作为:
@js.native
@JSGlobal
class Foo extends js.Object {
def foobarbaz: js.UndefOr[TypeOfSomeArgument] = js.native
def bar(someArgument: TypeOfSomeArgument): Unit = js.native
}
如果TypeOfSomeArgument
与使用Foo
的{{1}}不同,您可以简单地将其作为Foo
的类型参数:
class Foo[TypeOfSomeArgument] ...
如果您对TypeOfSomeArgument
的同一实例的Foo
随时间变化,那么您就遇到了麻烦。您必须改为使用Any
。
答案 1 :(得分:0)
class Foo extends js.Object {
def bar(someArgume: js.Any): Unit = {
val baz = js.Dynamic.literal("foobarbaz" -> someArgument)
js.Object.assign(this, baz)
}
}
这似乎相当于呈现的一个。