Typescript - 'HTMLTableRowElement | 类型的参数null 不可分配给 HTMLElement 类型的参数

Typescript - Argument of type 'HTMLTableRowElement | null is not assignable to parameter of type HTMLElement

在我的 Angular 应用程序中,我试图访问 DOM 以将 table 行滚动到视图中。为此,我创建了一个方法并传入以下参数:

this.scrollIntoView(this.tableElement?.rows.item(this.tableComponent.index));

显然参数可以为空且未定义,我收到以下打字稿错误:

TS2345: Argument of type 'HTMLTableRowElement | null | undefined' is not assignable to parameter of type 'HTMLElement'.   Type 'undefined' is not assignable to type 'HTMLElement'.

方法 scrollIntoView(row: HTMLElement) 接受 HTMLElement 作为输入。 this.tableElement 是一个 HTMLTableElement。显然问题是我连续传入 this.scrollintoView() 可能为空。

我试图通过简单地将我的方法 this.scrollIntoView() 放入 if 块中来避免这个问题,它会检查参数是否为 null 或未定义:

  if (
    this.tableElement?.rows.item(this.tableComponent.index) !== null &&
    this.tableElement?.rows.item(this.tableComponent.index) !== undefined
  ) {

嗯。 None 这有帮助。我不知道问题出在哪里,非常感谢您的帮助!

该消息看起来像是基于错误变量类型的编译器消息,所以我认为错误发生在您的条件运行之前。

我怀疑你必须这样做:

scrollIntoView(row: HTMLTableRowElement | null | undefined)

并更改您传递给函数的值,使其不是 HTMLTableElement。

这是一个猜测,因为您没有告诉我们 tableElement 是什么,也没有分享您的滚动方法的任何代码。

我不得不在这样的事情上经常与 TypeScript 作斗争。我通常会这样做:

this.scrollIntoView(this.tableElement?.rows.item(this.tableComponent.index) as HTMLTableRowElement);