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

105
Views
ES6 instancia de al asignar un tipo a una variable
const Namespace = { "FooFunction": () => { class MyError extends Error { constructor(message) { super(message); } } return {"MyError": MyError}; } } console.log((new (Namespace.FooFunction()).MyError("foo")) instanceof Namespace.FooFunction().MyError);

Esto imprime falso. Estoy buscando una forma de usar instancia de contra un "tipo almacenado en una variable" como este. ¿Cómo puedo hacer esto? ¿Es posible?

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

0

Cada vez que llama a Namespace.FooFunction , crea una nueva clase MyError , por lo que Namespace.FooFunction().MyError == Namespace.FooFunction().MyError nunca será verdadero.

Si necesita mantener la declaración de la clase MyError dentro de la función tal como la tiene, cambiando lo menos posible, podemos convertir FooFunction en un IIFE, lo que le permite devolver la misma clase MyError en cada llamada:

 const Namespace = { "FooFunction": (() => { class MyError extends Error { constructor(message) { super(message); } } return (...arguments) => ({"MyError": MyError}); })() } console.log((new (Namespace.FooFunction()).MyError("foo")) instanceof Namespace.FooFunction().MyError);

Por supuesto, una mejor opción sería agregar la clase al propio objeto Namespace :

 const Namespace = { "MyError": class MyError extends Error { constructor(message) { super(message); } }, "FooFunction": function() { return {"MyError": this.MyError}; } } console.log((new (Namespace.FooFunction()).MyError("foo")) instanceof Namespace.FooFunction().MyError);
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!