我试图在Kotlin中编写一个小node.js应用程序来测试和使用javascript互操作。来自外部节点模块' foo'它揭示了一个原型' Bar',我正在尝试创建一个新的' Bar'。
在Javascript中我会写一些类似的东西
var foo = require('foo')
var bar = new foo.Bar()
在Kotlin,我定义了一个外部功能'要求'并加载按预期工作的模块:
external fun require(module: String): dynamic
...
val foo = require("foo")
//Somehow create a new Bar
现在我想创建一个新的Bar实例。到目前为止,我已经尝试过:
val bar = foo.Bar()
。这被解释为功能,因此无效。val bar = Bar()
我能找到的唯一解决方法是通过原生javascript代码实例化对象:val bar = js("new foo.Bar()")
。这有效,但有一些缺点:
有没有办法实现这一目标,特别是纯粹的kotlin?
答案 0 :(得分:0)
我想您必须将Bar
定义为模块foo
中的外部类:
@JsModule("foo")
external class Bar {
...
}
请参阅https://kotlinlang.org/docs/reference/js-modules.html和https://kotlinlang.org/docs/reference/js-interop.html