我使用ts2kt在我的项目中使用jQuery。基础工作正常,但是,我无法弄清楚如何调用这个函数(我只想传递一个回调函数):
fun done(doneCallback1: JQueryPromiseCallback<T>? = definedExternally /* null */,
vararg doneCallbackN: JQueryPromiseCallback<T>): JQueryPromise<T>
JQueryPromiseCallback
界面如下所示:
external interface JQueryPromiseCallback<T> {
@nativeInvoke
operator fun invoke(value: T? = definedExternally, vararg args: Any)
}
我尝试创建一个它的实例,像这样传递:
done(object : JQueryPromiseCallback<Any> {
override fun invoke(value: Any?, vararg args: Any) {
}
})
但是,我在调用函数上遇到错误:
用可选参数覆盖'外部'功能`
生成的@nativeInvoke
注释也已弃用,并且给出了一条我无法弄清楚的弃用消息:
使用动态
对身体使用内联扩展功能
我是否应该更正ts2kt生成的文件?如果是这样,怎么样?我是否只是没有覆盖invoke
方法的语法?
答案 0 :(得分:1)
现在最好的方法是用Kotlin的函数文字类型替换接口,但另一个问题是我们无法正确(通常)将它映射到Kotlin的函数文字类型。
相关问题: https://youtrack.jetbrains.com/issue/KT-16319 https://github.com/Kotlin/ts2kt/issues/55 https://github.com/Kotlin/ts2kt/issues/56