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

145
Views
Cómo elegir el método para llamar dependiendo del argumento

El problema

Tengo un método foo(msg: string, arg: string) que llamará a un método desde bar , que es un objeto de la misma clase que foo . Qué método depende del valor de arg . Mi problema es cómo debo hacer eso de una buena manera.

En mi base de código real, quiero usarlo para refactorizar. Porque se ve así:

 add() { foo('Adding', 'add'); } sub() { foo('Subtracting', 'sub'); } mul() { foo('Multiplying', 'mul'); } div() { foo('Dividing', 'div'); }

Mi acercamiento

Tengo un método como este:

 foo(msg: string, arg: string) { console.log(msg); this.bar[arg](); // More code }

En otras palabras, quiero llamar al método arg desde bar . Y esto funciona como debería. Sin embargo, me gustaría restringir los valores que puede tener arg . Supongo que podría hacer algo como:

 foo(arg: string) { if(arg !== 'fun1' && arg !== 'fun2') { // Handle error } this.bar[arg](); }

El argumento arg nunca será "construido". Uso valores constantes directamente todo el tiempo, como

 foo('fun1');

y nunca algo asi

 // Example of how I will NOT use this let arg = someFunctionReturningAString(); foo(arg);

Mis preocupaciones aquí son 1) la seguridad y que la gente diga "¡NOOOOO! ¡Es una mala práctica!" y 2) que mi IDE no puede detectar errores ortográficos con mi enfoque.

Entonces, mi objetivo aquí es un método conveniente para llamar a un método desde la bar según el argumento arg . Preferiblemente algo que haga que un IDE sea capaz de detectar errores ortográficos. ¿Cómo puedo hacer eso?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Podrías usar tipos literales en tu firma, como:

 foo(msg: string, arg: 'add' | 'sub' | 'mul' | 'div') { console.log(msg); this.bar[arg](); // More code }

https://www.typescriptlang.org/docs/handbook/literal-types.html

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!