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

616
Vistas
Typescript: Generic enum types as index for another type

I'm trying to create an indexed type whose index are the values of an enum BUT the enum comes from a generic argument.

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

Both of those implementations shows the error:

An index signature parameter type cannot be a literal type or generic type. Consider using a mapped object type instead.

When I implement it as a mapped object as suggested:

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

It doesn't show any errors at the definition but it only accepts TEnum instances as the value. It shows this error when I try to instantiate an EnumMap.

Type '{ "test": ValueClass; }' is not assignable to type 'TestEnum'.

I'm using this enum as a test:

export enum TestEnum {
  test = 'test'
}

Is there any way to use a generic enum as a type's index?

PS.: I understand I can implement it using string as the key, but I want to tie the indexes to the enum values;

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

Does this work for you?

enum Enum {
  "ABC" = "abc",
  "CDE" = "cde"
}

export type EnumMap<TEnum extends string = Enum> = {
  [key in TEnum]?: string;
}

const map: EnumMap = { [Enum.ABC]: "123" };

Since TEnum is a string union, you can use it as [key in TEnum] inside the index signature.

I am not sure why you used string | undefined for 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