我需要转换下面的代码,它使用jQuery中的一个名为ajax settings的东西(在create()
调用中的javascript中用来创建CouchDB database)
$.couch.db("mydb").create({
success: function(data) {
console.log(data);
},
error: function(status) {
console.log(status);
}
});
我已经定义了这些
@JsName("$")
external val jq: JQuery
val jCouch: dynamic get() = jq.asDynamic().couch
但我仍然坚持如何转换javascript代码
jCouch.db.create("mydb")
。现在?
答案 0 :(得分:2)
有几种方法。首先,您可以创建一个dynamic
对象并在那里设置所需的属性:
val settings: dynamic = Any()
settings.success = { data: dynamic -> console.log(data) }
settings.error = { status: dynamic -> console.log(status) }
jCouch.db("db").create(settings)
(您也可以为数据或状态指定相应的类型)
其次,您可以使用json
功能:
jCouch.db("db").create(json(
"success" to { ... }, // edit note: added missing comma
"error" to { ... }
))
第三,您可以编写类型化的标题。我不知道什么是Couch API,因此标题看起来像大致:
external interface Db {
fun create(settings: DbCreateSettings)
}
external interface DbResult
external interface DbError
external interface DbCreateSettings {
val success: ((DbResult) -> Unit)?
val error: ((DbError) -> Unit)?
}
fun JQuery.db(name: String): Db = asDynamic().db(name)
fun foo() {
jq.db("name").create(object : DbCreateSettings {
override val success = { it: DbResult -> console.log(it) }
override val error = { it: DbError -> console.log(it) }
})
}
最后,您可以看到Kotlin stdlib如何为选项
声明标头