打字稿“类型元素上不存在属性”

新手上路,请多包涵

我正在开始使用 Typescript 的旅程。所以我在我的 Html 中有 video 标记,在 .ts 文件中有这些行:

 ...
class KomakhaPlayer {
  private container = ...;
  private video: Element = this.container.getElementsByClassName( 'video' )[ 0 ];
  private controls = ...;

  constructor(){
    this.video.controls = false; // ts error
    ...
  }
}
...

如您所见 this.video 具有 Element 类型,但低于 this.video.controls 向我抛出 Typescript 错误 Property ‘controls’ does not exists on type ‘Element’

临时我改了 Element 输入 any ,但我想 知道 如何正确解决这个错误并在以后处理类似的问题。提前致谢!

解决方案: 所以正确的方法是这样定义的:

 private video: HTMLVideoElement = <HTMLVideoElement>this.container.getElementsByClassName( 'video' )[ 0 ];

@deceze 在下面的评论中进行了解释

原文由 lomboboo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 216
2 个回答

您需要像这样声明类型:

 const video = document.getElementById('video') as HTMLVideoElement | null;

原文由 Richard 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题