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

187
Vistas
Componente abstracto de reacción (ES6) que representa una matriz de componentes. ¿Cómo crear un archivo d.ts para él?

Estoy tratando de crear un archivo de declaración para el siguiente componente. Fue escrito con JS ES6.

 function Column({ className, layout }) { function renderLayout() { return layout.map((item, index) => { const Component = item?.component || item; return ( <Component {...item?.options} // eslint-disable-next-line react/no-array-index-key key={index} /> ); }); } return ( <div className={className} > {renderLayout()} </div> ); }

Ejemplo de declaración:

 <Column className='test' layout={[ { component: Input, // It can use options options: { // It can have a custom shape. How to define types for options? first: 'test' } }, { component: Date, // It can use options options: { // It can have a custom shape. How to define types for options? second: 'test', newValue: { index: 3 } } } ]} /> <Column className='test' layout={[Input, Date]} />

Tengo un problema con la propiedad de opciones . No sé cómo definir tipos para el objeto, ya que puede tener diferentes tipos según el componente con el que pase el usuario.

Entrada , Fecha : son ejemplos de componentes, se pueden reemplazar con cualquier otro componente.

Mi archivo de declaración.

 interface ILayout { component?: React.ElementType; options?: any; // <---- Here is a problem. How to replace any with defined types. } interface ColumnProps { className?: string; layout?: (ILayout|React.ElementType)[]; } export class Column extends React.Component<ColumnProps> {}
about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

Puede hacer que ILayout sea un tipo condicional:

 type ILayout = { component?: InputType; options?: OptionsForInputType } | { component?: DateType; options?: OptionsForDateType }
about 4 years ago · Santiago Gelvez 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