質問させてください
初歩的なものかと思いますがよろしくおねがいします

以下の様に getElementById() にてinput要素を取得した場合、value属性を読み取ろうとすると問題が発生します。
  const input = document.getElementById('input');
  const text = input.value; // <- プロパティ 'value' は型 'HTMLElement' に存在しません。ts(2339)

解決方法を検索すると、
  const input = <HTMLInputElement>document.getElementById('input');
  const input = (document.getElementById('input')) as HTMLInputElement;
などの型アサーション?キャスト?で解決するように書いている記事が多くヒットするように感じます。

質問としましては、
 ・HTMLElementではなくHTMLInputElement等の具体的な型で要素を取得する方法はありますか?
 ・具体的な型で取得できない場合、それがHTMLInputElementであると判定する方法はどのようなものがありますか?

以上、長くなりましたがご教授頂けると嬉しいです。