Как в коде js итерировать по котлиновской LinkedHa...
# russian
l
Как в коде js итерировать по котлиновской LinkedHashMap?
Можно посмотреть на вкладку результатов Generated javascript code
l
Ага, уже соборазил, спасибо
Copy code
kotlin.kotlin.collections.LinkedHashMap.prototype.forEach = function (callback) {
    const it = this.entries.iterator();
    while (it.hasNext()) {
        const entry = it.next();
        callback(entry.key_5xhq3d$_0, entry._value_0)
    }
};
i
интересно откуда такой суффикс у key
l
mangling же
Сам entry - это котлиновский класс какой то
Знать бы как это отключить... Я понимаю зачем он нужен, но когда нет никакогой необходимости - можно было бы отключить. Ну или хоть какой то механизм для этого общий предложить.
i
у свойств и методов без параметров нет манглинга. Это видно по коду, сгенерированному для примера по ссылке.
s
интересно откуда такой суффикс у key
может быть это для того чтобы private поля не путались при наследовании?
org.jetbrains.kotlin.js.naming.NameSuggestion.Companion#getPrivateMangledName
да, точно
i
Тогда в коде выше с суффиксами потенциальная проблема, если он обращается к приватным полям вместо публичных свойств
l
Так или иначе надо что то придумывать с этим переименованием, потому что вызывать много котлина из js - сложно. А значит переводить большой проект с js на котлин - сложно. А мелкие проекты на котлине не интересны.
b
@lewik если есть возможность, лучше пользоваться public API, а в Вашем случае такая возможность есть
prototype конечно лучше не трогать, но если очень надо …
утилитные функции имеет смысл писать на котлине и использовать
JsName
аннотацию для того чтобы получить более читаемое имя
l
@bashor Map и List - не сложно. Главная проблема - у меня 20 data class на kotlin-common. Я не могу прописать JsName.
Судя по всему проще переписать весь js на kotlin %)