Об этом проекте
getorset-anything — небольшой npm-пакет, оборачивающий распространённый шаблон: поиск ключа в Map или обычном объекте и создание начального значения, если ключ отсутствует. В README объясняется мотивация на примере, где Map хранит массивы, а вызывающий код должен проверить на undefined, создать пустой массив, установить его и затем выполнить push. Пакет предоставляет функции mapGetOrSet и objGetOrSet, выполняющие этот шаг поиска-или-инициализации одним вызовом.
Использование показано как для Map, так и для объектов. Для Map вызов mapGetOrSet(map, 'abc', () => []) возвращает существующий массив или создаёт и сохраняет новый. Для объекта objGetOrSet(obj, 'abc', () => []) делает то же самое. В README отмечается, что реализация избегает отдельной проверки has(), когда значение найдено, возвращая его немедленно, что подаётся как соображение производительности.
Поддержка TypeScript — центральная особенность. В README указано, что дополнительная настройка не требуется, и показан вывод типов в работе: тип возвращаемого значения фабрики должен совпадать с типом значения Map или объекта, и возвращаемое значение несёт этот тип. В примерах показаны корректная фабрика, возвращающая number[], и некорректная фабрика, возвращающая объект, которая отклоняется проверкой типов, а также ошибки типов при попытке добавить строку в массив чисел.
Пакет входит в семейство небольших утилит на TypeScript того же автора, включая is-what, is-where, merge-anything, check-anything, remove-anything, map-anything, filter-anything, copy-anything, case-anything, flatten-anything и nestify-anything. Установка выполняется через npm i getorset-anything. В README не описываются runtime-зависимости, размер бандла, бенчмарки или поддержка браузеров помимо акцента на TypeScript.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.