Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

159
Vistas
Mecanografiado con React, infiere el tipo de matriz pasada como prop

tengo este componente:

 import React from 'react' export interface IForEachProps { each: any[] children: <T>(item: T, index: number) => JSX.Element given?: boolean key?: (item: any) => any } export const For: React.FC<IForEachProps> = ({ each, children, key, given = true }) => { if (!given) return null return ( <> {each.map((item, index) => ( <React.Fragment key={key ? key(item) : index}>{children(item, index)}</React.Fragment> ))} </> ) }

No he tenido éxito en mis intentos de inferir el tipo de each accesorio, ya que podría ser cualquier matriz. Lo que quiero, mirando el ejemplo a continuación, es que el compilador deduzca de la matriz de entrada que el parámetro en la devolución de llamada es, de hecho, una cadena.

 const list: string[] = ['hello'] <For each={list}> {(item) => ( <div>{item.length}</div> )} </For>
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Resuelto. Tuve que convertir el componente en un componente de función para poder usar genéricos correctamente.

 import React from 'react' export interface IForEachProps<T> { each: Array<T> children: (item: T, index: number) => JSX.Element given?: boolean key?: (item: any) => any } export function For<T>({ each, children, key, given = true }: IForEachProps<T>) { if (!given) return null return ( <> {each.map((item, index) => ( <React.Fragment key={key ? key(item) : index}>{children(item, index)}</React.Fragment> ))} </> ) }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Seguro que no funciona. TS ve que each: any[] . Eso significa "olvida todo lo que sepas sobre ese tipo". Para que esto funcione, debe proporcionar tipos genéricos para esta interfaz. Por lo tanto, obligará a TS a encontrar el tipo exacto de esta matriz:

 export interface IForEachProps<Item> { each: Array<Item> children: (item: Item, index: number) => JSX.Element given?: boolean key?: (item: Item) => string | number

También recomiendo encarecidamente evitar "cualquier" tipo. Siempre arruina la idea central del texto mecanografiado.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda