【问题标题】:'play' does not exist on type 'HTMLElement' and Property 'value' does not exist on type 'EventTarget'“播放”在“HTMLElement”类型上不存在,并且“EventTarget”类型上不存在属性“值”
【发布时间】:2017-10-21 08:22:58
【问题描述】:

不知道为什么这两个警告来自。 有什么想法可以摆脱打字稿中的那些警告信息吗? 谢谢

错误 TS2339:“HTMLElement”类型上不存在属性“play”。

    export function playAudio(e, audioId) {
        e.preventDefault()
        let audioPlayer: HTMLElement = document.getElementById(audioId)
        audioPlayer.play();
    }

(248,82):错误 TS2339:“EventTarget”类型上不存在属性“值”。

    <input type="checkbox" id="inputSchedule" name="inputCheckboxesSchedule"
           value={this.state.displayMode}
           onClick={e => this.toogleDisplaymode(e.target.value)}/>

【问题讨论】:

    标签: typescript jsx


    【解决方案1】:

    第一个警告意味着HTMLElement 实例上没有play() 方法。这是有道理的,因为play() 可能是您在自己的组件上定义的方法。

    第二个警告意味着EventTarget 实例中没有value 属性。有关EventTargets, see MDN的更多信息。

    我不确定如何解决第一个问题,因为您需要获取对您创建的实例的访问权限。但是对于第二个,您很可能只需要转换返回值。所以,你应该这样做:

    {e => this.toogleDisplaymode((e.target as HTMLInputElement).value)}
    

    编辑:这可能会解决您的第一个问题。

    我不确定,但可能是您正在尝试播放媒体元素,如果是这种情况,您需要将 audioPlayer 转换为正确的类型:

    let audioPlayer: HTMLMediaElement = document.getElementById(audioId)
    

    See MDN, again, for more information.

    【讨论】:

    • 感谢您的详细解释
    【解决方案2】:

    在 Angular 7 中可以使用此代码:

    let audioPlayer = <HTMLVideoElement>document.getElementById('video');
    audioPlayer.muted = true;
    

    【讨论】:

      【解决方案3】:

      在 Angular 5 中,您需要按如下方式进行转换:

      let audioPlayer = <HTMLVideoElement> document.getElementById(audioId);
      
      audioPlayer.play();  
      

      【讨论】:

      • 完美。谢谢@Sem!
      • 无论 OP 是否在寻找它,这就是我想要的。非常感谢 ng6 菜鸟!
      【解决方案4】:

      一个较晚的帖子,但它会帮助其他用户,要解决第一个问题,您可以将audioPlayer 变量的类型更改为HtmlVideoElement,如下所示

      let audioPlayer: HTMLVideoElement = document.getElementById(audioId);  
      audioPlayer.play();  
      

      这绝对可以解决问题

      【讨论】:

      • 首先,你必须像这样投射:let audioPlayer: HTMLVideoElement = &lt;HTMLVideoElement&gt; document.getElementById(audioId);
      猜你喜欢
      • 2017-06-23
      • 2021-05-18
      • 2021-06-03
      • 2019-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      相关资源
      最近更新 更多