I am building a request that has multiple methods attached to it. I'd like to simplify the code by iterating over an enum and building the request, but when I try this I end up with a different result than expected.
The before code looks like this:
export const makeShelterRequest = (area: string) => {
const request = new Request().setArea(area);
request
.getDogs()
.set(
StatusType.Adopted,
setAnimalFilter1(),
)
.set(
StatusType.Lost,
setAnimalFilter2(),
)
.set(
StatusType.Appointment,
setAnimalFilter3(),
)
.set(
StatusType.Processing,
setAnimalFilter4(),
));
return request;
};
I'm attempting to iterate instead like so:
const request = new Request().setArea(area);
const requestCounts = request.getDogsCount()
const ENUM_OBJECT_KEYS = Object.keys(ENUM_OBJECT)
ENUM_OBJECT_KEYS.forEach((key) => {
requestCounts.set(
key,
ENUM_OBJECT[key as StatusType]))
})
return requestCounts
Where my ENUM_OBJECT looks like this:
export const ENUM_OBJECT: Partial<
Record<StatusType, MyFilterTypes>
> = {
[StatusType.Adopted]: setAnimalFilter1(),
[StatusType.Lost]: setAnimalFilter2(),
[StatusType.Appointment]: setAnimalFilter3(),
[StatusType.Processing]: setAnimalFilter4(),
};
The first returns an actual request, the second returns a Map. I'm not sure with the ForEach how to return a request after iteration. Any clues what I'm doing wrong here?
Well, turns out the solution was dumb:
In my attempted iteration I returned return requestCounts. Changing it to return request worked.