На данный момент вы должны представить интерфейс и его реализацию, так что это будет примерно так:
external interface ConfigInterface {
var defs: String,
var resolvers: QueryHolder
}
external interface QueryHolder {
var Query: BookProcessor
}
external interface BookProcessor {
var books: () -> Array<Any>
}
Для более сложных структур это может легко стать проблемой. Вот что можно сделать для автоматизации таких переводов. Вы можете:
- сгенерировать объявление машинописи для этого кода с помощью компилятора машинописи (используя
tsc -d
) - сгенерировать kotlin объявление с дукат .
Dukat - это инструмент из команды Kotlin / JS, созданный специально для этого, продолжающаяся битва для улучшения качества этого инструмента. Вот что будет сгенерировано в вашем конкретном случае:
external interface `T$0` {
var books: () -> Array<Any>
}
external interface `T$1` {
var Query: `T$0`
}
external object config {
var defs: String
var resolvers: `T$1`
}
Что далеко не оптимально - например, имя сгенерированных сущностей - это то, что мы не хотели поощрять людей к повторному использованию, но чем больше оно идет Тем более это выглядит как ошибка (которую мы исправим так или иначе).