javascript - Objektet är av typen 'okänd'


Jag har enkla Rxjs-funktioner Observables och Operators för att returnera ny Observable. I min kod använder jag filter- och map-operatorer kedjade inuti ett pipe, tyvärr får jag fel TS2571: Objektet är av typen 'unknown'. inuti filter-operatorn data Koden är följande:

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}),

  )

}


Svar #1

Jag tror att du behöver lägga till typning på parametern

filter((data: any) => data > 2)

Svar #2

Sättet att åtgärda detta problem är att definiera typen av observer korrekt.

Parametern observer i funktionen som skickas till konstruktören av Observable är av typen Observer<number>, eftersom den meddelar nummer. Om du gör så här kan Typescript härleda typen av data som number.

Med andra ord bör koden vara detta

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}),

)

Relaterade artiklar