[解決済み] TypeScript: 型システムに関する問題
質問
VisualStudio 2012 で typescript をテストしているところですが、その型システムで問題が発生しました。私の html サイトには、ID "mycanvas" を持つ canvas タグがあります。私はこのキャンバスに矩形を描画しようとしています。以下はそのコードです。
var canvas = document.getElementById("mycanvas");
var ctx: CanvasRenderingContext2D = canvas.getContext("2d");
ctx.fillStyle = "#00FF00";
ctx.fillRect(0, 0, 100, 100);
残念ながらVisualStudioは次のような文句を言います。
プロパティ 'getContext' はタイプ 'HTMLElement'です。
2行目をエラーとしてマークしています。単なる警告かと思いきや、コードがコンパイルされないのです。VisualStudioによると
ビルドエラーが発生しました。続けて、最後に成功したビルドを実行したいですか? ビルドを実行しますか?
私はこのエラーは全く好きではありませんでした。なぜ動的なメソッド呼び出しがないのでしょうか?結局のところ、メソッド getContext は私の canvas 要素に間違いなく存在します。しかし、私はこの問題は簡単に解決できると思いました。canvas の型注釈を追加しただけです。
var canvas : HTMLCanvasElement = document.getElementById("mycanvas");
var ctx: CanvasRenderingContext2D = canvas.getContext("2d");
ctx.fillStyle = "#00FF00";
ctx.fillRect(0, 0, 100, 100);
しかし、型システムはまだ満足していませんでした。これが新しいエラーメッセージです。
HTMLElement' を 'HTMLCanvasElement' に変換できません。タイプ 'HTMLElement' はタイプからプロパティ 'toDataURL' が欠落しています。 'HTMLCanvasElement' のプロパティがありません。
私は静的型付けには賛成ですが、これでは言語が使い物になりません。型システムは私に何をさせたいのでしょうか?
UPDATEです。
Typescriptは確かに動的な呼び出しをサポートしておらず、私の問題はタイプキャストで解決できます。私の質問は基本的にこれと重複しています。 TypeScript: HTMLElement のキャスティング
どのように解決するのですか?
var canvas = <HTMLCanvasElement> document.getElementById("mycanvas");
var ctx = canvas.getContext("2d");
あるいは、動的なルックアップを行うために
any
型(型チェックなし)を使用する。
var canvas : any = document.getElementById("mycanvas");
var ctx = canvas.getContext("2d");
で異なるタイプを見ることができます。 lib.d.ts .
関連
-
ローカルリソースのロードが許可されていない問題を解決する
-
[解決済み] CSSでcellpaddingとcellspacingを設定する?
-
[解決済み] JavaScriptで要素のクラスを変更するにはどうすればよいですか?
-
[解決済み] オブジェクトの種類を決定しますか?
-
[解決済み] 型チェック:typeof、GetType、is?
-
[解決済み] Pythonで型をチェックする標準的な方法は何ですか?
-
[解決済み] TypeScriptで文字列を数値に変換する方法とは?
-
[解決済み] 入力テキストボックスの値を取得する
-
[解決済み】TypeScriptのインターフェースと型について
-
[解決済み】HTML5入力のプレースホルダの色をCSSで変更する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ジャンボトロンのセンター出しは?
-
[解決済み] slackのチームIDやチャンネルIDを調べる最も簡単な方法は何ですか?
-
[解決済み] HTMLとCSSによるテーブルスクロール [重複]について
-
[解決済み] HTML 5: Is it <br>, <br/>, or <br />?
-
[解決済み] div' コンテナに合わせて画像を自動リサイズするにはどうしたらいいですか?
-
[解決済み] <button> vs. <input type="button" />. Which to use?
-
[解決済み] CSSでdivのアスペクト比を維持する
-
[解決済み] HTMLでBase64画像を表示する方法
-
[解決済み] CSSでdivを縦にスクロールできるようにする
-
[解決済み】TypeScriptでHTMLElementの型をアサートする方法は?