Kotlin JS使用可选参数错误覆盖“外部”功能

时间:2017-08-03 17:29:29

标签: jquery kotlin kotlin-js-interop

我使用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方法的语法?

1 个答案:

答案 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