数据:未知对象在 angular 中的管道和映射函数中属于 'unknown'.ts 类型

data: unknown Object is of type 'unknown'.ts in pipe and map functions in angular

我正在尝试 return angular 中的管道和映射运算符中的一些数据,但出现此错误:(参数)数据:未知 对象的类型为 'unknown'.ts(2571)

我正在使用 angular 12+ 版本。

我试图在控制台上将数据修改为“Round: 0”、“Round: 1”等而不是 1、2 等

这是我在 home.component.ts 文件中的代码

import { Component, OnDestroy, OnInit } from '@angular/core';
import { Observable } from 'rxjs';
import { Subscription } from 'rxjs';
import { interval } from 'rxjs';
import { filter } from 'rxjs/operators';
import { map } from 'rxjs/operators';

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.css']
})
export class HomeComponent implements OnInit, OnDestroy {

  private counterSubsciption!: Subscription;
  constructor() { }

  ngOnInit() {
    // this.counterSubsciption = interval(1000).subscribe(count => {
    //   console.log(count);
    // })

    const firstObservable = new Observable(observer => {
      let count = 0;
      setInterval(() => {
        observer.next(count);
        if(count===2){
          observer.complete();
        }
        if(count>3){
          observer.error("Count is greater than 3!");
        }
        count++;
      },1000)
    });


    this.counterSubsciption = firstObservable.pipe(filter((data) =>{
      return data > 0;
    }),map((data) => {
      return data;
    })).subscribe((data) => {
      console.log(data);
    }, error => {
      console.log(error);
      alert(error); 
    }, () => {
      console.log('Completed!')
    }
    
    )

  }

  ngOnDestroy() {
    this.counterSubsciption.unsubscribe();
  }

}

阅读 Rxjs 运算符 来自 https://www.learnrxjs.io/learn-rxjs/operators/creation/interval

您可以使用 RxJs interval 运算符,而不是用 new Observable 包装 setInterval

const firstObservable = interval(1000)
    .pipe(
        tap((data) => {
            if (data > 3) {
                throw 'Count is greater than 3!';
            }
        }),
        map((data) => {
            return 'Round' + data;
        })
    );

firstObservable.subscribe({
    next: (data) => console.log(data),
    error: (err) => console.error(err),
});