Typescript“属性在类型元素上不存在”
问题描述:
我正在用Typescript开始我的旅程。所以,我有video
标记在我的HTML和.ts
文件这些行:Typescript“属性在类型元素上不存在”
...
class KomakhaPlayer {
private container = ...;
private video: Element = this.container.getElementsByClassName('video')[ 0 ];
private controls = ...;
constructor(){
this.video.controls = false; // ts error
...
}
}
...
正如你可以看到this.video
有元类型,但低于this.video.controls
抛出我的打字稿错误住宅“控制”不存在于类型'元素'。
临时,我改变Element
类型any
,但我想知道如何妥善解决这个错误并处理今后类似。提前致谢!
SOLUTION: 所以正确的方法是定义是这样的:
private video: HTMLVideoElement = <HTMLVideoElement>this.container.getElementsByClassName('video')[ 0 ];
说明通过下面@deceze在评论
答
Element
是确实没有一个非常通用的根对象一个controls
属性。见https://developer.mozilla.org/en-US/docs/Web/API/Element。您正在寻找的是HTMLVideoElement
,它继承自HTMLMediaElement
,它具有controls
属性。
Typescript是完全正确的:你告诉它你正在使用Element
,Typescript警告你Element
不知道有controls
。
使用'this。控制“不?而不是'this.video.controls' – Smit
'Element'是一个自定义类,或者它是你正在使用的库的一部分 – Gab
@Smit,no''this.video.controls'',** controls ** is a视频标签的属性 – lomboboo