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