Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

215
Vistas
El método estático mecanografiado no existe en el tipo someclass

Tengo un código como este -

 type StateTypes = State1 | State2; class State1 { static handleA (): StateTypes { // Do Something return State2; } static handleB (): StateTypes { // Do Something return State1; } } class State2 { static handleA (): StateTypes { // Do Something return State1; } static handleB (): StateTypes { // Do Something return State2; } } let currentState: StateTypes = State1; for (/* some Condition*/){ if(/* some Condition*/) currentState = currentState.handleA(); else currentState = currentState.handleB(); }

Funciona perfectamente bien, sin embargo, Typescript se queja de que no puede encontrar el método estático handlaA() en la clase State1.

 TS2339: Property 'handleA' does not exist on type 'StateTypes'.   Property 'handleA' does not exist on type 'State1'.
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

type StateTypes = State1 | State2 significa instancia de State1 o State2 . Lo que quieres es: type StateTypes = typeof State1 | typeof State2 . Esto se refiere a constructores en lugar de instancias.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Parece que return State1 no devuelve lo que esperas. Puedes probar eso en un ejemplo más simple:

 class State2 { static handleB (): State1 { return State1 } } class State1 { static test (): void { console.log("testing") } }

Aquí esperamos obtener una referencia a State1

 let currentState = State2.handleB() currentState.test()

Pero el error es el mismo: Property 'test' does not exist on type 'State1'.

Puede resolverlo haciendo del estado una instancia. Entonces puede obtener una referencia a un estado diferente. Puede sobrescribirlo con una instancia del nuevo estado.

 type currentState = State1 | State2 class State2 { getNewState (): State1 { return new State1() } testMessage (): void { console.log("state two") } } class State1 { getNewState (): State2 { return new State2() } testMessage (): void { console.log("state one") } } let currentState = new State2() // ask for the new state currentState = currentState.getNewState() currentState.testMessage()
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda