我使用 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 的函数字面量类型替换接口(interface),但另一个问题是我们不能正确(通常)将它映射到 Kotlin 的函数字面量类型。

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


评论关闭
IT序号网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!