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

608
Vistas
Texto mecanografiado: tipos de enumeración genéricos como índice para otro tipo

Estoy tratando de crear un tipo indexado cuyo índice son los valores de una enum PERO la enum proviene de un argumento genérico.

 export type EnumMap<TEnum extends string | undefined = undefined> = { [key: TEnum]: ValueClass; } export type EnumMap<TEnum extends string | undefined = undefined> = { [key: keyof TEnum]: ValueClass; }

Ambas implementaciones muestran el error:

Un tipo de parámetro de firma de índice no puede ser un tipo literal o un tipo genérico. Considere usar un tipo de objeto asignado en su lugar.

Cuando lo implemento como un objeto mapeado como se sugiere:

 export type EnumMap<TEnum extends string | undefined = undefined> = { [TEnumKey in keyof TEnum]: ValueClass; }

No muestra ningún error en la definición, pero solo acepta instancias de TEnum como valor. Muestra este error cuando intento crear una instancia de EnumMap .

Escriba '{ "prueba": ValueClass; }' no es asignable para escribir 'TestEnum'.

Estoy usando esta enum como prueba:

 export enum TestEnum { test = 'test' }

¿Hay alguna forma de usar una enum genérica como índice de tipo?

PD: entiendo que puedo implementarlo usando una cadena como clave, pero quiero vincular los índices a los valores de enumeración;

 export type EnumMap = { [key: string]: ValueClass; } const map: EnumMap = { [TestEnum.test]: {...} }; // works fine
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

¿Esto funciona para tí?

 enum Enum { "ABC" = "abc", "CDE" = "cde" } export type EnumMap<TEnum extends string = Enum> = { [key in TEnum]?: string; } const map: EnumMap = { [Enum.ABC]: "123" };

Dado que TEnum es una unión de cadenas, puede usarla como [key in TEnum] dentro de la firma del índice.

No estoy seguro de por qué usaste string | undefined para TEnum ...

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