¿Mi tslint se volvió loco? Da una advertencia por cada suscripción que hice en toda la aplicación. No importa si uso una sintaxis antigua o nueva, todavía dice que la suscripción está en desuso... ¿Cómo escribir una suscripción que no quedará en desuso?
Eso es lo que estaba bien hasta hoy:
something.subscribe((user: User) => { this.userProviderService.setUserId(user.userId); this.proceed = true; });Probé una nueva sintaxis pero no hace ningún cambio:
something.subscribe({ next: (user: User) => { this.userProviderService.setUserId(user.userId); this.proceed = true; }, complete: () => {}, error: () => {} });Esto es exactamente lo que está diciendo:
(método) Observable.subscribe(siguiente?: (valor: Objeto) => vacío, error?: (error: cualquiera) => vacío, completo?: () => vacío): Suscripción (+4 sobrecargas) @obsoleto — Use un observador en lugar de una devolución de llamada completa
@deprecated: use un observador en lugar de una devolución de llamada de error
@deprecated: use un observador en lugar de una devolución de llamada completa
subscribe está obsoleto: use un observador en lugar de una devolución de llamada completa (obsoleta) tslint (1)
Entonces, ¿cómo me suscribo a las cosas ahora?
Para responder a su pregunta "Entonces, ¿cómo me suscribo a las cosas ahora?": https://rxjs-dev.firebaseapp.com/guide/observer Esto es todo. Es fácil de usar y bastante similar a lo que se ha hecho antes con el pequeño cambio de que ahora acepta un objeto (observador) con 3 claves: siguiente, error, completo.
Tuvimos la misma discusión hace 2 días en el trabajo y, aunque puede/debe usar el observador, la desaprobación parece ser una falsa alarma. (Pensamos que teníamos que cambiar ~900 suscripciones):
Este es un problema creado en la página de github de rxjs con respecto a este problema: https://github.com/ReactiveX/rxjs/issues/6060
Y en él, los desarrolladores dicen que se debe a un error mecanografiado: https://github.com/microsoft/TypeScript/issues/43053
Este error ya se solucionó hace 3 días, aunque no estoy seguro de si ya está en la versión más reciente:
Acabo de buscar TSLint (v1.3.3) en la pestaña de extensiones de VS Code. Dice:
❗IMPORTANTE: TSLint ha quedado obsoleto en favor de ESLint.
Cuando deshabilité TSLint e instalé ESLint, todas las advertencias relacionadas con las suscripciones desaparecieron.
¡Salud!
Tuve el mismo problema y lo resolví usando de esa manera que es más claro.
.subscribe({ complete: () => { ... }, error: () => { ... }, next: () => { ... } });Estaba experimentando esto en Angular v13 y lo resolví usando el código anterior.