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

185
Vistas
¿Límite de tubería observable y angular?

Estoy haciendo esto en uno de mis guardias de ruta...

 canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> { // go through each check sequentially, stop process if one does throwError return of(true).pipe( // Is there a limit to operators in a pipe??? switchMap(() => of(true)), // simplified for this post...usually call a function that returns switchMap(() => of(true)), switchMap(() => of(true)), switchMap(() => of(true)), switchMap(() => of(true)), switchMap(() => of(true)), switchMap(() => of(true)), switchMap(() => of(true)), // if any function returns throwError, we skip other checks catchError(() => of(false)) ); }

Me estoy encontrando con un error. Si hay un switchMap más agregado a la lista, VSCode me dice... "El tipo 'Observable<{}>' no se puede asignar al tipo 'Observable'. El tipo '{}' no se puede asignar al tipo 'boolean'.ts (2322)"

¿Alguien puede explicarme por qué es así? No puedo resolverlo y encontrar problemas relacionados.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Esto está bastante bien explicado en este problema de github .

La esencia de esto es que solo se admiten 9 operadores; más y volverá a escribir Observable<{}> ya que tienen que escribir todo manualmente hasta 9 operadores.

Use múltiples tuberías (mantiene typesafety después de la novena entrada)

Si aún desea mantener la seguridad de tipos pero agrega más de 9 operadores, simplemente llame a la función de canalización nuevamente.

 source$ .pipe( tap(() => {}), tap(() => {}), tap(() => {}), tap(() => {}), tap(() => {}), tap(() => {}), tap(() => {}), tap(() => {}), tap(() => {}) ) .pipe( // Add the next operators after the 9nth here tap(() => {}) )

Afirmar manualmente el tipo resultante

Alternativamente, puede agregar una afirmación de tipo manual al final. Sin embargo, tenga cuidado: después del noveno operador, el tipo se inferirá como Observable<{}> , perdiendo efectivamente la seguridad de tipos.

 const source$:Observable<boolean> = of(true) .pipe( tap(() => {}), tap(() => {}), tap(() => {}), tap(() => {}), tap(() => {}), tap(() => {}), tap(() => {}), tap(() => {}), tap(() => {}), // Typesafety is lost here tap(() => {}), tap(() => {}), // Manually assert the type at the end // Beware that the compiler will allow pretty much anything here, // so "as Observable<string>" would work, even though it'd be wrong. ) as Observable<boolean>;
over 4 years ago · Santiago Trujillo 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