我正在开始使用 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 许可协议
Element
是一个非常通用的根对象,它确实没有controls
属性。请参阅 https://developer.mozilla.org/en-US/docs/Web/API/Element 。您正在寻找的是HTMLVideoElement
,它继承自HTMLMediaElement
,它具有controls
属性。打字稿是完全正确的:你告诉它你正在使用
Element
,并且打字稿警告你Element
不知道有controls