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

188
Views
¿Por qué Typescript + VS Code muestra el tipo "cualquiera" con InstanceType?

No puedo reproducir esto en TS Playground. Tengo un método que devuelve una instancia:

 class Base { static selectOne<T extends typeof Base>(this: T): InstanceType<T> {} } class Foo extends Base {} class Bar extends Base {}

Esto generalmente funciona bien con VS Code IntelliSense, por ejemplo:

 const foo = Foo.selectOne(); // foo is type "Foo"

Sin embargo, si tengo una unión de clases, deja de funcionar:

 const foo = (Foo as typeof Foo | typeof Bar).selectOne(); // foo is type "any"

Este ejemplo funciona en TS Playground , muestra Foo | Bar , así que probablemente hay algo raro con mis clases. Como solución alternativa, necesitaba agregar el tipo de instancia a la clase:

 class Base { static selectOne<T extends typeof Base>(this: T): T['instanceType'] {} static instanceType: Base; } class Foo extends Base { static instanceType: Foo; } class Bar extends Base { static instanceType: Bar; }

¿Cuáles son algunas de las posibles razones por las que InstanceType devuelve any ? Ya pasé varios días tratando de depurar esto. No puedo compartir un ejemplo reproducible porque hay cientos de archivos.

Base tsconfig.json:

 { "compilerOptions": { "target": "esnext", "module": "esnext", "moduleResolution": "node", "allowJs": true, "noEmit": true, "noEmitHelpers": true, "strict": true, "isolatedModules": true, "esModuleInterop": true, "skipLibCheck": true, "baseUrl": "./", "noImplicitAny": true, "noImplicitOverride": true, "strictNullChecks": true, "useUnknownInCatchVariables": true, "resolveJsonModule": false, "types": ["node"], "experimentalDecorators": true, "noErrorTruncation": true, }, "exclude": [ "./node_modules", "./build", ], }
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!