trabajando en un proyecto aquí. Estoy usando Nextjs y Typescript. Tengo pestañas, en una pestaña estoy pasando muchos objetos, hice una función de reducción para ordenar y empujar todo en su categoría adecuada. me encontré con este problema
El tipo 'indefinido' no se puede utilizar como tipo de índice.
Específicamente debajo de cada title (marcado con comentarios aquí) dentro de la función de reducción.
interfaz:
export interface ITimelineItem { title?: string subtitle?: string date?: string reference?: string description?: string skillSet?: string reverse?: boolean startYear?: string endYear?: string } interface ITimeline { items?: ITimelineItem[] } const TimeLine: React.FC<ITimeline> = ({ items = [] }) => { const classes = useStyles() const cat = items.reduce((item, { skillSet, title }) => { if (!item[title!]) item[title] = [] // ^^^^^ ^^^^^ item[title].push(skillSet) // ^^^^^ return item }, {}) }Dado que en ITimelineItem title está marcado como opcional, puede estar undefined , lo que no se puede usar para indexar objetos. Para solucionarlo, agregue una verificación de title antes de usarlo como índice.
if (title !== undefined && !item[title]) item[title] = [] También puede usar un operador de afirmación no nulo aquí, pero el código se romperá si el title no está undefined y básicamente anula el propósito de TS aquí.
if (!item[title!]) item[title] = []Esto significa que no puede usar el title como valor de índice en item[**title**] porque es posible que el title no exista. para solucionar esto, puede utilizar el operador de afirmación no nula ! .