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

102
Views
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
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!