Engineering practice · 25 MIN
Keep generic grouping type safe
Preserve the relationship between records and keys.
A generic helper should retain the input type in its result. Map avoids prototype-key collisions such as __proto__ and keeps first-seen key order. When serializing a Map to JSON, convert it to an explicit entry array. Structural types describe shape; they do not enforce business authorization.
Treat the function as a small service: define a contract, maintain an invariant, and test the boundaries.
Read the example
const groups = new Map<string, number[]>();
groups.set("__proto__", [1]);
console.log(groups.get("__proto__")?.length);Check the expected output
1
Your challenge
Input is an array of {team:string,points:number}. Return [[team,total],...] in first-seen team order. Teams can be any string, including __proto__. Do not mutate the input.
Solution cost: Expected O(n) time · O(n + k) for grouped rows and k returned totals. space
Common trap
A plain object used as a map may collide with inherited properties.
Further reading: TypeScript: generics