Kotlin JS 重写 'external' 带有可选参数错误的函数

Kotlin JS Overriding 'external' function with optional parameters error

我使用 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) {

    }
})

但是,我在调用函数时遇到错误:

Overriding 'external' function with optional parameters`

生成的 @nativeInvoke 注释也被弃用了,并给我一个我无法理解的弃用信息:

Use inline extension function with body using dynamic

我应该更正 ts2kt 生成的文件吗?如果是这样,如何?我只是没有正确覆盖 invoke 方法的语法吗?

现在最好的办法是将接口换成Kotlin的函数字面量类型,但另一个问题是我们不能(一般)正确地将其映射到Kotlin的函数字面量类型。

相关问题: https://youtrack.jetbrains.com/issue/KT-16319 https://github.com/Kotlin/ts2kt/issues/55 https://github.com/Kotlin/ts2kt/issues/56