网站搜索

angular - 类型 'unknown' 不能赋值给类型 'KeyboardEvent'。ts (2345)


我正在学习 TypeScript 和 Angular,我在书中遇到了一个无法编译的示例。我担心我不知道如何解决这个问题。

这是无法编译的函数:

ngOnInit(): void {
    const logger = fromEvent(this.input.nativeElement, 'keyup');
    logger.pipe(
      map((evt: KeyboardEvent) => evt.key.charCodeAt(0)),
      filter(code => {
        if (this.numeric) {
          return !(code > 31 && (code < 48 || code > 57));
        }
        return true;
      }),
      tap(digit => this.keys += String.fromCharCode(digit))
    ).subscribe();
  }

无法编译的具体行是:

map((evt: KeyboardEvent) => evt.key.charCodeAt(0)),

我看到了以下错误:

Argument of type 'OperatorFunction<KeyboardEvent, number>' is not assignable to parameter of type 'OperatorFunction<unknown, number>'.
  Type 'unknown' is not assignable to type 'KeyboardEvent'.ts(2345)

答案#1

只要告诉 TypeScript 这个流将是键盘事件的流

const logger = fromEvent<KeyboardEvent>(this.input.nativeElement, 'keyup');

这个 <Type> 参数使日志记录器成为 Observable<KeyboardEvent>,并且 ts 不会对此抱怨