TypeScript 1.5 - TypeScript 1.5でボタンを有効化/無効化する方法は?
VS 2013 を使用しています。TypeScript 1.5 をインストールした後、アップグレードするという質問/提案に従って:
「あなたのプロジェクトは、Visual Studio に現在インストールされているバージョンより古いバージョンの TypeScript を使用しています。プロジェクトをビルドしようとするとエラーが発生する可能性があります。今後この警告が表示されないように、プロジェクトファイルの TypeScriptToolsVersion をアップグレードしますか?」
次のようなエラーがたくさん出ました:
エラー 39 ビルド: プロパティ 'disabled' は型 'HTMLElement' に存在しません。
次のような発言について:
document.getElementById("btnExcel").disabled = false;
「disabled」が波線で下線付き。
https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes のバージョン 1.5 に関する記述では、次のように書かれています:「resize、disabled、uniqueID、removeNode、fireEvent、currentStyle、runtimeStyle のプロパティは HTMLElement 型から削除されました」
さて、私はその「誤った」発言を次のように言い換えました:
document.getElementById("btnExcel").setAttribute('disabled', 'disabled');
私には奇妙に見えます。
これは TypeScript 1.5 でより型安全な方法でよりエレガントに表現できますか?有効化と無効化の両方の例を挙げてもらえますか?
どんな助けでもありがとう!
回答 #1
これを行うためのよりきれいな方法があるはずです:
var element = <HTMLInputElement> document.getElementById("btnExcel");
element.disabled = true;
あるいは、もし一行で言いたい場合は:
(<HTMLInputElement> document.getElementById("btnExcel")).disabled = true;
getElementByIdのようなものはジェネリックメソッドであるべきで、型パラメータを受け入れるべきようです。とはいえ、ジェネリックメソッドは型キャストがしてくれること以上のことはしてくれません。
回答 #2
私はここでTypeScriptバージョン3.7系を使っています
(document.getElementById('button') as HTMLInputElement).disabled = false;
推奨されます。(@Martin の回答に従って)
