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

228
Views
Activar tipos en una fábrica en typecipt

Digamos que tengo una clase base A y A1, A2, A3 todas se extienden a A. Creo una clase de fábrica, digamos, FactoryForA que implementa un método, digamos getObject como

 getObject(typeToSwitch) { case A1: // return an object of A1 case A2: // return an object of A2 case A3: // return an object of A3 }

Estoy buscando una manera de hacer que el tipo de argumento typeToSwitch seguro.

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Mi enfoque sería usar la palabra clave infer typescript para devolver el tipo solicitado. Algo como lo siguiente:

 class A { public getA = () => {} } class A1 extends A { constructor() { super(); } public getA = () => { return 'A1'; } } class A2 extends A { constructor() { super(); } public getA = () => { return 'A1'; } } // get the key map types ( a1 and a2 ) type Keys = keyof typeof FactoryA.AMap; // get the classes types type aTypes = typeof FactoryA.AMap[Keys]; // build the return type with generics type ClassInstanceType<T> = T extends new () => infer R ? R : never; class FactoryA { public static AMap = { a1: A1, a2: A2 }; public static getObject = (typeToSwitch: Keys ): ClassInstanceType<aTypes> => { return new FactoryA.AMap[typeToSwitch](); } } const a1instance: A1 = FactoryA.getObject('a1'); console.log(a1instance.getA());
over 4 years ago · Santiago Trujillo Report

0

Lo que se me ocurrió es getObject<T extends new(...args: any[]) => A>(typeToSwitch: T) .

Dice que T es algo que extiende A y es construible, por lo que nos permite usar un tipo como valor (todavía tengo que entender por qué). Además getObject(T extends A) no funciona (por qué solo se admite un tipo construible).

Si alguien tiene sugerencias o explicaciones, actualice la respuesta o el comentario.

Aquí hay un enlace a un ejemplo de lo que dije anteriormente.

over 4 years ago · Santiago Trujillo 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!