Я пытаюсь написать внешнюю декларацию, соответствующую следующему интерфейсу машинописного текста (это допустимый TS для представления доступа к JavaScript через 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`
могут быть действительными, если скомпилированы в let length = headers["content-length"]
.
Я пытался использовать @JsName
Обойти это можно следующими способами:
@JsName("content-length")
@JsName("'content-length'")
@JsName("\"content-length\"")
Но всеиз них не удается, потому что они ограничивают строку действительными идентификаторами.Есть ли способ обойти это?
РЕДАКТИРОВАТЬ: я открыл вопрос на Kotlin YouTrack