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

58
Vistas
Convertir Object.entries reduce al tipo Generics

Tengo la siguiente función en TypeScript, lo que hace es convertir una enumeración en una matriz.

 function toKeyValList(e: any) { return Object.entries(e).reduce((acc: any, val: any[]) => { acc.push({ key: val[0], value: val[1] }); return acc; }, []); }
 enum IncidentRecordStatus { IN_PROCESS = 'IN_PROCESS', CLOSE = 'CLOSE', } const list = toKeyValList(IncidentRecordStatus); [LOG]: [{ "key": "IN_PROCESS", "value": "IN_PROCESS" }, { "key": "CLOSE", "value": "CLOSE" }]

Me gustaría convertirlo en una función genérica sin usar el tipo "cualquiera"

Lo intenté de esta manera, pero me sale un error.

 export function toKeyValList<T>(e: T): T { return (Object.entries(e) as Array<[keyof T, T[keyof T]]>).reduce((acc, [key, value]) => { acc.push({ key: key, value: value }); return acc; }, e as T); }

cual seria la forma correcta de hacerlo?

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

0

No pude entender de dónde viene esa variable LOG , pero aquí está el resto:

 interface keyValuePair { key: string, value: string, } function toKeyValList<T extends object>(e: T) : keyValuePair[] { return Object.entries(e).reduce((acc, val : [string, string]) => { acc.push({ key: val[0], value: val[1] }); return acc; }, [] as keyValuePair[]); } enum IncidentRecordStatus { IN_PROCESS = 'IN_PROCESS', CLOSE = 'CLOSE', } const list = toKeyValList(IncidentRecordStatus);

Esto devolvería:

 [{ "key": "IN_PROCESS", "value": "IN_PROCESS" }, { "key": "CLOSE", "value": "CLOSE" }]
about 4 years ago · Juan Pablo Isaza Denunciar

0

Si desea inferir el tipo de devolución, intente evitar las mutaciones en TypeScript. Considere este ejemplo:

 const toKeyValList = < Obj extends Record<string, string> >(obj: Obj) => Object .entries(obj) .reduce<{ key: string, value: string }[]>( (acc, [key, value]) => [...acc, { key, value }], [] ); enum IncidentRecordStatus { IN_PROCESS = 'IN_PROCESS', CLOSE = 'CLOSE', } // { // key: string; // value: string; // }[] const list = toKeyValList(IncidentRecordStatus);

Patio de juegos

Ver mi artículo sobre mutaciones TS

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