【发布时间】:2017-08-07 19:56:00
【问题描述】:
我正在使用 Typescript 开始我的旅程。所以我在我的 Html 和 .ts 文件中有 video 标签这些行:
...
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 错误 “Element”类型上不存在属性“控件” .
暂时我将Element 类型更改为any,但我想知道如何正确解决此错误并在以后处理类似问题。提前致谢!
解决方案: 所以正确的方法是这样定义的:
private video: HTMLVideoElement = <HTMLVideoElement>this.container.getElementsByClassName( 'video' )[ 0 ];
@deceze 在 cmets 下面的解释
【问题讨论】:
-
使用
this. controls不是吗?而不是this.video.controls -
Element是自定义类还是您正在使用的库的一部分 -
@Smit, no
this.video.controls, controls 是 video 标签的属性 -
private video: Element = this.container.getElementsByClassName( 'video' )[ 0 ];避免分配外部方法。而是将其放在构造函数中。 -
Element确实没有属性controls。HTMLVideoElement可能。
标签: javascript typescript types