Tengo la función Rxjs Observables y Operadores simples para devolver un nuevo Observable. En mi código, estoy usando operadores de filtro y mapa encadenados dentro de una tubería, lamentablemente recibo el error TS2571: el objeto es de tipo 'desconocido'. dentro de los datos del operador de filtro El código es el siguiente:
import { filter, map, Observable } from 'rxjs' @Component({ selector: 'app-observable-operator', templateUrl: './observable-operator.component.html', styleUrls: ['./observable-operator.component.css'] }) export class ObservableOperatorComponent{ title:string='Angular Observable using Observable Operators'; ob=new Observable((observer:any)=>{ console.log("Observable Starts"); observer.next(1) observer.next(2) observer.next(3) observer.next(4) observer.next(5) observer.complete() }).pipe(filter(data=> data > 2), //Error inside filter operator (parameter) data:unknown map((val)=>{return val as number*2}), ) }
Creo que necesitas agregar tipeo al parámetro
filter((data: any) => data > 2)
La forma de solucionar este problema es definir el tipo de derecho de observer
.
El parámetro observer
en la función que se pasa al constructor del Observable
es de tipo Observer<number>
, ya que notifica números. Si hace esto, Typescript puede inferir el tipo de data
como number
.
En otras palabras, el código debería ser este
ob=new Observable((observer: Observer<number>)=>{ console.log("Observable Starts"); observer.next(1) observer.next(2) observer.next(3) observer.next(4) observer.next(5) observer.complete() }).pipe(filter(data=> data > 2), //Error inside filter operator (parameter) data:unknown map((val)=>{return val as number*2}), )