This is a dynamic multiple key map to map a single object to multiple dynamic values.
import { MultiKeyMap } from "dynamic-multikey-map";
type ValueType = {
username: string;
ssn: string;
};
const map = new MultiKeyMap<ValueType, string>([
(value: ValueType) => value.ssn,
(value: ValueType) => value.username,
]);
map.add({
username: "john.doe",
ssn: "123-45-6789",
});
expect(map.get("john.doe")).toEqual(map.get("123-45-6789"));