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

197
Views
Cómo obtener mensajes de error de "propiedad faltante" con objetos vacíos (y por lo tanto sin sellar)

Entonces, tengo una API que toma un objeto de opciones, algo como esto:

 type Options = { pos: number }; function doTheThing(options: Options) { }

Ahora, si llamo a esto con cualquiera de los siguientes, aparece un bonito mensaje de error:

 doTheThing(); // requires another argument. doTheThing({ something: 20 }); // missing property "pos"

Excelente. Pero si paso un objeto vacío, Flow lo considerará "sin sellar" y, por lo tanto, no tendrá ningún problema con él:

 doTheThing({ }); // No error, would like it to say "pos" missing instead.

Entonces, traté de hacerlo exacto:

 type Options = {| pos: number |};

Ahora, me sale un error, pero no es muy agradable:

 doTheThing({ }); // Cannot call `doTheThing` with object literal bound to `options` because inexact object literal [1] is incompatible with exact `Options` [2].

Pero solo quiero que diga que falta "pos". Lo anterior es más complicado y solo te obliga a tener que leer la definición de Options para saber lo que se necesita. Quiero que le ofrezca la propiedad real que falta. Lo cual hará, tan pronto como ponga algo al azar allí:

 doTheThing({ x: 10 }); // Cannot call `doTheThing` with object literal bound to `options` because property `pos` is missing in object literal [1] but exists in `Options`

¿Hay alguna forma de que me dé ese mensaje de error en {} , en lugar del mensaje menos útil? Idealmente, a través de algún tipo de anotación adicional en el tipo y no alguna configuración de flujo global que apague los objetos no sellados o algo así.

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!