Estoy tratando de crear un mapa normalizado por la clave del objeto a partir de una matriz de objetos usando reducir. La matriz se define mediante una aserción const - as const
:
const flavors = [ { type: 'sweet' }, { type: 'sour' }, ] as const;
El mapa normalizado deseado se ve así:
const expectedFlavorsMap = { 'sweet': { type: 'sweet' }, 'sour': { type: 'sour' } } as const;
Ahora, para crear dicho mapa, estoy usando una función de reducción para que las claves sean de type
y los valores sean los objetos mismos de la matriz de flavors
.
const flavorsMap = flavors.reduce((acc, flavor) => { acc[flavor.type] = flavor; return acc; }, {} as any); // any for now
¿Es posible obtener un objeto afirmado constante (mapa) de sabores después de usar reducir? Esto es lo que probé, pero puedo ver que hay un problema con el tipo FlavorsMapType
.
const flavors = [ { type: 'sweet' }, { type: 'sour' }, ] as const; type FlavorsType = typeof flavors; type FlavorsMapType = Record<FlavorsType[number]['type'], FlavorsType[number]> const flavorsMap = flavors.reduce((acc, flavor) => { acc[flavor.type] = flavor; return acc; }, {} as FlavorsMapType); const expectedFlavorsMap = { 'sweet': { type: 'sweet' }, 'sour': { type: 'sour' } } as const; const sweet = flavorsMap['sweet']; // err, expected type to be the object {type: 'sweet'} const sweet2: { readonly type: 'sweet' } = flavorsMap['sweet'];
patio de juegos mecanografiado
¡Gracias por adelantado!