angular - 类型 'unknown' 无法分配给类型 'KeyboardEvent' .ts (2345)

标签 angular typescript events keyboard

我正在学习 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)

最佳答案

只需告诉 ts 该流将是键盘事件流

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

这个<Type>参数使记录器 Observable<KeyboardEvent>并且 ts 不会提示

关于angular - 类型 'unknown' 无法分配给类型 'KeyboardEvent' .ts (2345),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66216814/

相关文章:

angular - 按下退出按钮时防止关闭 Angular Material Dialog 但在单击背景时允许关闭

angular - 响应式(Reactive)表单元素在 Dragula 的拖动幽灵中显示不同的 <select> 值

Angular 快速入门 : Error: spawn EACCES

javascript - 无法将事件监听器附加到 <img>-Tag 的 onload 事件

使用 (2.0.0-rc.5) 路由的 Angular2 路由

forms - Angular 2 : disable button if there are changes in form

typescript 输出顺序 - gulp 相当于 tsc with tsconfig.json

node.js - Mongoose + Typescript -> 导出模型接口(interface)

c# - 删除 KeyDown 事件后的延迟?

Javascript/jQuery : Why different result for event. 目标使用 <a> 标签对比。 console.log 中的其他元素,注意 $(this) 的 alert()