[解決済み】プロパティ 'value' が 'HTMLElement' 型の値に存在しない。
質問
typescriptで遊んでいて、入力ボックスにテキストが入力されると、p要素を更新するスクリプトを作成しようとしています。
htmlは以下のような感じです。
<html>
<head>
</head>
<body>
<p id="greet"></p>
<form>
<input id="name" type="text" name="name" value="" onkeyup="greet('name')" />
</form>
</body>
<script src="greeter.js"></script>
</html>
そして
greeter.ts
ファイルを作成します。
function greeter(person)
{
return "Hello, " + person;
}
function greet(elementId)
{
var inputValue = document.getElementById(elementId).value;
if (inputValue.trim() == "")
inputValue = "World";
document.getElementById("greet").innerText = greeter(inputValue);
}
でコンパイルすると
tsc
以下の"error"が発生します。
/home/bjarkef/sandbox/greeter.ts(8,53): The property 'value' does not exist on value of type 'HTMLElement'
しかし、コンパイラはjavascriptファイルを出力し、それはクロームでうまく動作します。
どうしてこのエラーが出るのでしょうか?また、どうすれば直せますか?
また、どのプロパティが
'HTMLElement'
タイプスクリプトによると?
私はjavascriptとtypescriptに非常に慣れていないので、何か明らかなことを見逃しているかもしれないことに注意してください :)
どのように解決するのですか?
Tomasz Nurkiewiczの回答からすると、typescriptはtypesafeであることが問題であるようです。) ですから
document.getElementById()
は型を返します。
HTMLElement
を含まないもの。
value
プロパティを指定します。サブタイプ
HTMLInputElement
しかし
value
プロパティを使用します。
そこで、解決策としては
getElementById()
を
HTMLInputElement
このように
var inputValue = (<HTMLInputElement>document.getElementById(elementId)).value;
<>
は、タイプスクリプトのキャスティング演算子です。質問を見る
TypeScript: HTMLElement のキャスティング
.
上の行から得られるjavascriptは、次のようになります。
inputValue = (document.getElementById(elementId)).value;
つまり、型情報を含まない。
関連
-
[解決済み】Typescript : require文はimport文の一部ではない
-
[解決済み] Angular 2の@ViewChildアノテーションがundefinedを返す
-
[解決済み] 未使用のパラメータに対する型チェックをスキップする
-
[解決済み] as "というキーワードは何を意味するのでしょうか?
-
[解決済み] 'タイプ 'never'にプロパティが存在しません。
-
[解決済み】Ignore Typescript Errors "property does not exist on value of type" (タイプの値にプロパティが存在しない)。
-
[解決済み】タイプ 'EventTarget' にプロパティ 'value' が存在しない。
-
[解決済み】TypeScriptのEventTarget型にプロパティ'value'が存在しない。
-
[解決済み】Angular 2 beta.17:プロパティ 'map' がタイプ 'Observable<Response>' に存在しない。
-
[解決済み] プロパティ 'assign' はタイプ 'ObjectConstructor' に存在しません。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 未使用のパラメータに対する型チェックをスキップする
-
[解決済み] TypeScriptの「as const」の意味とその使用例とは?
-
[解決済み] なぜTypescriptではinferキーワードが必要なのでしょうか?
-
[解決済み] TypeScriptの "*.d.ts "について
-
[解決済み] Typescript は ?演算子をサポートしていますか?(そして、それは何と呼ばれているのでしょうか?)
-
[解決済み] AngularでNameServiceのプロバイダがない
-
[解決済み] noImplicitAnyフラグを有効にしてtypescriptをコンパイルすると、"Index signature of object type implicitly has an 'any' type "というエラーが発生しますが、どうすれば防ぐことができますか?
-
[解決済み】WebStorm/PhpStormのダブルクォートでTypeScriptの自動インポートを行う。
-
[解決済み】タイプ 'EventTarget' にプロパティ 'value' が存在しない。
-
[解決済み】TypeScriptでHTMLElementの型をアサートする方法は?