Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

617
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!