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

230
Vistas
Texto mecanografiado: convertir de matriz de tipos a objeto de tipos

necesito este tipo

 type Sample = [a: string, b: number]

ser convertido a

 type Sample2 = { a:string, b:number}

Necesito esto para pasar argumentos de una función en un parámetro, en forma de objeto

 function example(otherFunctionParameters: Parameters<typeof otherFunction>){}

No quiero pasar una matriz en el parámetro.

Cómo puedo conseguir esto ?

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Debido a que no puede manipular etiquetas de tupla en el sistema de tipos , lo mejor que puede hacer es proporcionar manualmente una tupla de claves de propiedad, una para cada parámetro en la función original.

Al adaptar algunas utilidades de esta respuesta de jcalz, aquí hay una utilidad genérica que le dará un objeto asignado para los parámetros en una función: proporciona el tipo de función y una tupla de etiquetas para cada parámetro:

Parque infantil TS

 type ZipTuples<Keys extends readonly any[], Values extends readonly any[]> = { [K in keyof Keys]: [Keys[K], K extends keyof Values ? Values[K] : never]; }; type ZipTuplesAsObject< Keys extends readonly PropertyKey[], Values extends readonly any[], > = { [T in ZipTuples<Keys, Values>[number] as T[0]]: T[1] }; type ParamsAsObject< Fn extends (...params: readonly any[]) => any, Keys extends readonly PropertyKey[], > = ZipTuplesAsObject<Keys, Parameters<Fn>>; // Use declare function otherFunction ( irrelevantLabel: string, alsoNotUsed: number, onlyTheTypesMatter: boolean, ): void; function example (objectParam: ParamsAsObject<typeof otherFunction, ['a', 'b', 'c']>) { // objectParam; // { a: string; b: number; c: boolean; } const {a, b, c} = objectParam; a; // string b; // number c; // boolean }
about 4 years ago · Juan Pablo Isaza Denunciar

0

Desafortunadamente, debe pasarse como una matriz porque un objeto es de un tipo diferente a una matriz.

 type Sample = [a: string, b: number] type Sample2 = { a:string, b:number} function example(otherFunctionParameters: Sample){} function example2(otherFunctionParameters: Sample2){} example(['b', 3]) example2({a: 'b', b: 2})

Recomiendo cambiar el tipo de firma de la función de llamada. Si esto no es posible, una matriz debería funcionar bien.

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