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

115
Vistas
No regresar explícitamente en la devolución de llamada de la cadena de métodos hace que el compilador infiera incorrectamente el tema actual

En el primer ejemplo, myString tiene el error ts 2322 porque cree que returnString es un número (no lo es). En el segundo ejemplo, si devolvemos explícitamente getNumber(), no hay error ts 2322.

getString() devuelve un valor dentro de su definición. Cypress considerará el sujeto actual como el que se devolvió por última vez o se devolvió explícitamente en la devolución de llamada de una cadena de métodos, que en este caso es myString()

¿Cómo puedo abordar este error sin usar la palabra clave 'return'? Me gustaría usar el estilo del ejemplo 1 pero no quiero resaltar la sintaxis de falso positivo

 describe('example with error', () => { it('example with error', () => { getNumber() .then((returnedNumber) => { getString() }) .then((returnedString) => { const myString: string = returnedString // <-- HERE: "Type 'number' is not assignable to type 'string'. ts(2322)" expect(myString).to.equal('string') // true }) }) it('example without error', () => { getNumber() .then((returnedNumber) => { return getString() // <-- HERE: explicitly returning }) .then((returnedString) => { const myString: string = returnedString expect(myString).to.equal('string') // true }) }) }) function getNumber(): Cypress.Chainable<number> { return cy.wrap(1) } function getString(): Cypress.Chainable<string> { return cy.wrap('string') }
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

De los documentos para .then()

Lo que se devuelva desde la función de devolución de llamada se convierte en el nuevo asunto y fluirá hacia el siguiente comando (con la excepción de undefined)

Además, el resultado del último comando de Cypress en la función de devolución de llamada se generará como el nuevo asunto y pasará al siguiente comando si no hay retorno.

No estoy seguro de cómo puede definir ese comportamiento (cambiar de tema si no hay un retorno explícito) al compilador de TypeScript.

Pero para mí, la implicación es que el Sujeto puede tener any tipo.

Escribir el parámetro como tal elimina el mensaje de error.

 getNumber() .then(() => { getString() // Typescript can't infer Subject will be string // just because there's no return }) .then((returnedString: any) => { const myString: string = returnedString // no error })
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