編集: これはまだサポートされておらず、Kotlin YouTrack で追跡されています
次の Typescript インターフェイスに一致する Kotlinexternal
宣言を記述しようとしています (これは、 を介した JavaScript アクセスを表す有効な TS ですheaders['content-length']
)。
export interface Headers {
'content-length'?: string;
}
Dukat は以下を生成しますが、これは有効と見なされます。
external interface Headers {
var `content-length`: String? get() = definedExternally; set(value) = definedExternally
}
しかし今、コンパイラは次のように文句を言います:
Name contains illegal chars that can't appear in JavaScript identifier
JS 識別子に表示できないのは事実ですが、そうする必要はありません。このプロパティへのすべての Kotlin アクセスは次のようになります。
val length = headers.`content-length`
にコンパイルされた場合に有効になる可能性がありますconst length = headers["content-length"]
。
@JsName
次の方法で回避するために使用しようとしました。
@JsName("content-length")
@JsName("'content-length'")
@JsName("\"content-length\"")
しかし、有効な JS 識別子である文字列のみを許可するため、これらはすべて失敗します。これを回避する方法はありますか?