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

100
Vistas
Inferencia de tipo para el objeto constante proporcionado como parámetro de función que acepta un tipo asignado

Encontré un comportamiento extraño de TypeScript y me preguntaba cómo solucionarlo.

Tengo la siguiente función, que acepta un solo parámetro opts .

 type Opts<E extends string | number> = { [P in E]?: string }; function setOpts(opts: Opts<O>): void { // does stuff with <opts> }

La idea del tipo Opts<O> es que crea un tipo que acepta un objeto con claves de tipo O y valores de tipo string . Por ejemplo, si tengo un grupo de colores, digamos BLUE , RED y GREEN , obtendría lo siguiente:

 let colors: Opts<'BLUE'|'RED'|'GREEN'> = { BLUE: 'Blue color', RED: 'Red color', GREEN: 'Green color' }

Ahora, hasta aquí, todo funciona bien. Cuando llamo a mi función como se muestra a continuación, aparece un error mecanografiado, ya que YELLOW no es una clave aceptable. Eso es lo que espero y lo que quiero.

 setOpts({ BLUE: 'b', RED: 'r', GREEN: 'g', YELLOW: 'y' })

Sin embargo, por alguna razón (que no entiendo), cuando defino una constante con exactamente el mismo valor que el anterior y luego paso esa constante como un parámetro de mi función, TypeScript se compila sin error. Obviamente, no quiero eso.

 const param = { BLUE: 'b', RED: 'r', GREEN: 'g', YELLOW: 'y' }; setOpts(param);

¿Me equivoco al suponer que TypeScript debería inferir un tipo para param . ¿Hay alguna manera de forzar tal comportamiento?

about 4 years ago · Juan Pablo Isaza
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