In another round of React experiments, after another Vue frustration with Volar not typing event arguments, I was again into the state normalization land. When dealing with objects with IDs as keys, every operation requires a tedious reduce, in contrast to the intuitive map we use with arrays.
So I wrote a map for objects:
function mapObj<T>(obj: Record<string, T>, callback: (elem: T, key: string) => T): Record<string, T> { return Object.keys(obj).reduce((accum, key) => { accum[key] = callback(obj[key], key); return accum; }, {} as Record<string, T>); }
It’s fully typed, and it was surprisingly easy to write. TypeScript is a great language.
No comments:
Post a Comment