VS 2013の使用。TypeScript1.5をインストールし、質問/提案に従ってアップグレードした後:
「プロジェクトは、Visual Studioで現在インストールされているバージョンよりも古いバージョンのTypeScriptを使用しています。プロジェクトをビルドしようとするとエラーが発生する場合があります。プロジェクトファイルのTypeScriptToolsVersionをアップグレードして、この警告が表示されないようにしてください再び?"
次のようなエラーが大量に発生しました。
エラー39ビルド:プロパティ「無効」がタイプ「HTMLElement」に存在しません。
次のようなステートメントで:
document.getElementById("btnExcel").disabled = false;
「無効」の中線付き。
https://github.com/Microsoft/TypeScript/wiki/Breaking-Changes バージョン1.5を参照すると、「サイズ変更、無効、uniqueID、removeNode、fireEvent、currentStyle、runtimeStyleのプロパティが削除されます」タイプHTMLElementから」
今、私はこれらの「間違った」声明を次のように言い換えました。
document.getElementById("btnExcel").setAttribute('disabled', 'disabled');
私には奇妙に見えます。
TypeScript 1.5では、これをタイプセーフな方法でよりエレガントに表現できますか?有効化と無効化の両方の例を挙げられますか?
助けてくれてありがとう!
これを行うには、よりクリーンな方法が必要です。
var element = <HTMLInputElement> document.getElementById("btnExcel");
element.disabled = true;
または、ライナーが1つ必要な場合:
(<HTMLInputElement> document.getElementById("btnExcel")).disabled = true;
getElementById
などは汎用メソッドであり、型パラメーターを受け入れる必要があるようです。つまり、ジェネリックメソッドでは、型キャストでは得られないものは得られません。