I am just learning TypeScript and have a question. I am receiving data from the API and would like to type it.
interface FieldData {
type: number,
other: string
}
const AAA = 'aaa';
const BBB = 'bbb';
const CCC = 'ccc';
const fields: Array<FieldData> = await getFields();
const myData: any = {
[AAA]: [],
[BBB]: [],
[CCC]: []
};
fields.forEach((field: any) => {
if (field.type === 1) {
myData[AAA].push(field);
} else if (field.type === 2) {
myData[BBB].push(field);
} else {
myData[CCC].push(field);
}
});
How do I create a typing for a myData object? I don't want to use any type.
If the AAA etc properties may vary, and can't be completely static, write them with as const, and note that their array values are of Array<FieldData>.
const myData = {
[AAA]: [] as Array<FieldData>,
[BBB]: [] as Array<FieldData>,
[CCC]: [] as Array<FieldData>
};
fields.forEach((field) => {
or
const myData: Record<typeof AAA | typeof BBB | typeof CCC, Array<FieldData>> = {
[AAA]: [],
[BBB]: [],
[CCC]: []
};