LoginSignup
0
0

More than 3 years have passed since last update.

[TypeScript]getElementId使用して気になったこと

Last updated at Posted at 2020-01-22

AngularフレームワークでTypeScript を使用してたときにビルドエラーになってとりあえず調べた結果をまとめる。

エラー内容

以下のコードを書いていた。

<!-- HTML -->
<input type="file" id="recorder">
<audio id="player" controls></audio>
// TypeScript
const recorder = document.getElementById("recorder");
const player = document.getElementById("voice-player");

recorder.addEventListener("change", function(e: Event) {
    const file = e.target.files[0];
    player.src = URL.createObjectURL(file);
});

player.srcでsrcは存在しないというエラー。

原因

playerの型がHTMLElement型になっていた。audioタグだしHTMLAudioElementが返ってくると勝手に思ってしまっていた。

.getElementById()はHTMLElement型で返ってくるので自分でキャストする必要があった。

以下のようにキャストした。

const player = <HTMLAudioElement>document.getElementById("voice-player");

これでビルド通ったけど、キャストする以外に方法はないのだろうか。

2020/02/03 追記

コメントにてキャストする以外の方法で
以下URLを参考にすればできました。
https://qiita.com/simochee/items/b3d4dc15f474f805573c

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0