这个项目能做什么
getorset-anything 是一个小型 npm 包,封装了一种常见模式:在 Map 或普通对象中查找某个键,如果该键不存在则创建一个初始值。README 通过一个示例解释了其动机:一个 Map 保存数组,调用方必须检查 undefined、创建空数组、设置它,然后再 push。该包提供了 mapGetOrSet 和 objGetOrSet 函数,用一次调用完成这种查找或初始化步骤。
用法同时展示了 Map 和对象两种情况。对于 Map,mapGetOrSet(map, 'abc', () => []) 会返回现有数组,或创建并存储一个新数组。对于对象,objGetOrSet(obj, 'abc', () => []) 做同样的事。README 指出,该实现在找到值时避免了单独的 has() 检查,立即返回该值,这被作为一项性能考量提出。
TypeScript 支持是一项核心特性。README 说明无需额外设置,并展示了类型推断正常工作:工厂函数的返回类型必须与 Map 或对象的值类型匹配,返回的值也带有该类型。示例展示了一个返回 number[] 的正确工厂函数,以及一个返回对象的错误工厂函数被类型检查器拒绝,还有将字符串 push 进数字数组时的类型错误。
该包属于同一作者的一系列小型 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 没有描述运行时依赖、包体积、基准测试,或除 TypeScript 重点之外的浏览器支持。
评论
0 评分人数达到10人后显示
登录后参与讨论。