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

120
Vistas
¿Es posible inferir un tipo genérico desde el literal de la plantilla de cadena interna?

El siguiente fragmento de código hace exactamente lo que pretendo saber con una advertencia: me gustaría evitar tener que explicitar el genérico que necesita.

 type EventGroup = { actions: "run" | "save" other: "bla" } export type EventType<T extends keyof EventGroup> = `${T}/${EventGroup[T]}` const t: EventType<"actions"> = "actions/run"

Me gustaría que Typescript infiriera que:

 `actions/run` -> valid `actions/save` -> valid `actions/bla` -> NOT valid `other/bla` -> valid

Que es lo que hace este código pero con un genérico explícito.

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

0

Puede hacer eso con un tipo asignado y luego tomar una unión de los valores de:

 export type EventType = { [Key in keyof EventGroup]: `${Key}/${EventGroup[Key]}` }[keyof EventGroup];

Prueba de la validez del tipo:

 const t1: EventType = "actions/run"; // valid const t2: EventType = "actions/save"; // valid const t3: EventType = "actions/bla"; // NOT valid const t4: EventType = "other/bla"; // valid

Enlace del patio de recreo

Hay dos partes en eso, primero el tipo mapeado:

 type EventType = { [Key in keyof EventGroup]: `${Key}/${EventGroup[Key]}` }

que evalúa como:

 type EventType = { actions: "actions/run" | "actions/save"; other: "other/bla"; }

Luego usamos [keyof EventGroup] al final para extraer solo los valores de las actions y other como una unión.

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