6

1.0.x でサポートされていない Kotlin の JavaScript バックエンドをいじり、現在、おもちゃのプロジェクトを 1.1.x に移行しようとしています。これは、PouchDB とやり取りする単一ページの Web アプリの骨組みです。PouchDB にデータを追加するには、特定のプロパティ_idとを持つ JavaScript オブジェクトが必要_revです。また、PouchDB によって予約されているため、他のプロパティを最初から持つ必要はありません。_

このようなクラスを作成すると、インスタンスを PouchDB に送信できます。

class PouchDoc(
        var _id: String
) {
    var _rev: String? = null
}

ただし、プロパティを仮想にするために何かを行うと、インターフェイスをオーバーライドするか、クラスを開いてそれらをオーバーライドするサブクラスを作成すると、_idフィールド名が次のよう_id_mmz446$_0にマングルされ、PouchDB はオブジェクトを拒否します。プロパティに適用@JsName("_id")すると、生成された getter と setter にのみ影響します。バッキング フィールドの名前はまだ変更されたままです。

また、名前が で始まらない仮想プロパティの場合_、PouchDB はオブジェクトを受け入れますが、適切な名前のプロパティではなく、マングルされた名前のバッキング フィールドのみを格納します。

今のところ、仮想ではないものにすることで回避できると思います。しかし、Kotlin で PouchDoc と非 PouchDoc クラスの間でインターフェイスを共有することを考えていましたが、それができないようです。

これを機能させる方法、または Kotlin 言語の変更が必要ですか?

4

2 に答える 2