I'm attempting to create a function to normalize my arrays and it's expecting an output object that is structured like this:
{
allIds: [1],
byId: {
1: {...}
}
}
OR
{
allIds: ['1'],
byId: {
'1': {...}
}
}
I'm trying to create an interface called IOutput
to cater for this.
I've tried this:
interface IOutput {
allIds: string[] | number[]
byId: {
[key: number | string]: any
}
}
But it gives me the following error
An index signature parameter type must be 'string' or 'number'. ts(1023)
It seems to work when I do this:
interface IOutput {
allIds: string[] | number[]
byId: {
[key: number]: any
}
}
OR
interface IOutput {
allIds: string[] | number[]
byId: {
[key: string]: any
}
}
But that's not what I'm trying to accomplish. I've also tried this and it gives me the same error:
type StringOrNumber = string | number
interface IOutput {
allIds: string[] | number[]
byId: {
[key: StringOrNumber ]: any
}
}
How can I accomplish what I'm trying to do?