Не получается итерировать нативную Map из js в цик...
# russian
l
Не получается итерировать нативную Map из js в цикле for. Я ее помечаю как kotlin.collections.Map. Браузер ругается на то, что
entries.iterator is not a function
Втыкать итератор или есть готовое решение?
i
Думаю не надо кастить ее kotlin.collections.Map, т.к. она ею не является
Можно скастить к dynamic (
.asDynamic()
) и тогда можно будет использовать экстеншен
dynamic.iterator()
l
@ilya.gorbunov А как вообще... по-хорошему это должно быть? Вы планируете потратить разработать классы/external для интеграции с js? Или планируется что сразу все приложение на котлине будет?
Я как понимаю, итератор нужен самому компилятору котлина.
i
Для нативной Map должна быть декларация external class или external interface, которая содержит функцию
iterator()
У нас в stdlib-js такой декларации нет, т.к. Map — это класс из ES6, а у нас таргет это ES5.
l
А накой es5 то? Всегда же есть бабел и прочие Тогда уж буду js в es5 компилить
не совсем я понимаю как работает external для js. Он просто сообщает котлину что такой то метод есть или он класс создает прямо в js?
i
external только декларирует класс и его свойства/методы, но не создает
l
Это в js коже как то отражается?
i
Нет, external декларации в js-код не попадают.