Size: a a a

2020 July 02

m

makoven in ☄️ effector
Aleksandr Osipov
И то она касается сугубо TS
Она касается статических проверок. То есть больше забот по проверки корректности логики, что ты пишешь, ложится на тайпчекер. А значит ты пишешь с меньшим количеством ошибок)
источник

З

Завтра in ☄️ effector
крайне редко)
источник

AO

Aleksandr Osipov in ☄️ effector
makoven
Она касается статических проверок. То есть больше забот по проверки корректности логики, что ты пишешь, ложится на тайпчекер. А значит ты пишешь с меньшим количеством ошибок)
Понятно... ради ублажения TS
источник

m

makoven in ☄️ effector
Aleksandr Osipov
Понятно... ради ублажения TS
Нет. Ради стабильности кода
источник

m

makoven in ☄️ effector
Завтра
но я в таких случаях делаю [[key, value], [key2, value2]], ибо лень с мапами возиться
Тогда поиск по словарю ляжет на плечи js. А при map.get(key), поиском займется код на C++.
источник

m

makoven in ☄️ effector
Тут, кстати еще возможны деоптимизации при доступе через obj[key]. Рантайму надо понять массив это или объект. Если объект чекнуть наличие геттеров, пройтисб по цепочке прототипов..
источник

m

makoven in ☄️ effector
А map.get() однозначен
источник

З

Завтра in ☄️ effector
кому это интересно, когда операция практически бесплатна, а на фронте в 0.0000000001% случаев существуют какие-то ощутимо большие данные
источник

AO

Aleksandr Osipov in ☄️ effector
makoven
Тут, кстати еще возможны деоптимизации при доступе через obj[key]. Рантайму надо понять массив это или объект. Если объект чекнуть наличие геттеров, пройтисб по цепочке прототипов..
Часто ли это скажется хоть как о на производительности?
источник

m

makoven in ☄️ effector
Aleksandr Osipov
Часто ли это скажется хоть как о на производительности?
Ай донт ноу )
источник

AO

Aleksandr Osipov in ☄️ effector
Подозреваю что только в довольно специфичных задачах
источник

З

Завтра in ☄️ effector
бизнес-код должен быть кратким и читаемым, а не содержать портянки new Map(map...) и других приколов ради преждевременной оптимизации
источник

AO

Aleksandr Osipov in ☄️ effector
Вот с удалением правда геморой с объектом, можно конечно del obj[key], return {...obj}
источник

m

makoven in ☄️ effector
Завтра
бизнес-код должен быть кратким и читаемым, а не содержать портянки new Map(map...) и других приколов ради преждевременной оптимизации
Кстати, для однострочных стрелочных new Map() выглядит понятнее с точки зрения бизнес логики. Если возвращать объектовый литерал,
id => {}
то возникает неоднозначность, т.к. фигурные скобки тут будут означать новый блок функции. И в некоторых случаях можно забыть поставить скобки и получить логическую ошибку
источник

AO

Aleksandr Osipov in ☄️ effector
makoven
Кстати, для однострочных стрелочных new Map() выглядит понятнее с точки зрения бизнес логики. Если возвращать объектовый литерал,
id => {}
то возникает неоднозначность, т.к. фигурные скобки тут будут означать новый блок функции. И в некоторых случаях можно забыть поставить скобки и получить логическую ошибку
Так типизация же не даст
источник

AO

Aleksandr Osipov in ☄️ effector
Ну и к слову о производительности мапа, там где она нужна вдруг уж точно не стоит пересоздавать его каждый раз с копированием старого
источник

m

makoven in ☄️ effector
Aleksandr Osipov
Так типизация же не даст
Даст. В данной ситуации, возврат undefined из хэндлера является особым случаем и частью АПИ
источник

m

makoven in ☄️ effector
Aleksandr Osipov
Ну и к слову о производительности мапа, там где она нужна вдруг уж точно не стоит пересоздавать его каждый раз с копированием старого
Подозреваю, по производительности это ничем не отличается от {...obj}
источник

AO

Aleksandr Osipov in ☄️ effector
makoven
Подозреваю, по производительности это ничем не отличается от {...obj}
Ну я к тому что для получения профита от мапа в тех редких случаях когда это важно стоит скорее реф использовать а не перерсоздавать его
источник

ЕГ

Егор Гуща in ☄️ effector
Преждевременные оптимизации  - зло
источник