2017-05-21 30 views
3

この2つの警告の原因がわかりません。 タイスクリプトから警告メッセージを取り除く方法はありますか? ありがとう'再生'は 'HTMLElement'タイプには存在せず、プロパティ 'value'は 'EventTarget'タイプに存在しません

エラーTS2339:タイプ 'HTMLElement'にプロパティ 'play'が存在しません。

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

(248,82):エラーTS2339:プロパティ 'value'が 'EventTarget'タイプに存在しません。

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

答えて

2

最初の警告はHTMLElementインスタンスにはplay()方法が存在しないことを意味します。 play()は、おそらく独自のコンポーネントで定義したメソッドなので、意味があります。

EventTargetインスタンスには、valueプロパティがないことを意味します。 EventTargets, see MDNの詳細については、

作成したインスタンスにアクセスする必要があるため、最初の問題を解決する方法がわかりません。しかし、2番目の場合、戻り値をキャストする必要があります。

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

EDIT::これはあなたの最初の問題を解決する可能性がありますので、あなたはこのような何かを行う必要があります。

私はわからないが、それはあなたがメディア要素を再生しようとしているということかもしれないし、そのような場合は、右の型にaudioPlayerをキャストする必要があります。

let audioPlayer: HTMLMediaElement = document.getElementById(audioId) 

See MDN, again, for more information.

+0

詳細な説明をありがとう – newBike

2

後半のポストが、それはあなたが以下のようにHtmlVideoElementaudioPlayer変数の型を変更することができます最初の問題を解決するために、他のユーザーを支援します

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

これで問題は解決します。

関連する問題