2017-03-02 21 views
1

TypeScriptでAngular 2の小さなアプリケーションを開発していますが、問題が発生しました。TypeScriptでフォーム入力から値を取得

変数としてnumが数値として宣言されていて、これをフォームの入力ボックスにバインドするためにngModelを使用しています。値を取得して型をチェックすると、実際には文字列になり、数値ではなくなります。num >= 0をチェックすると、通常のJavaScript動作のために入力に空文字列が含まれていると、実際にはtrueに戻ります。

これはTypeScriptのバグですか、正しいデータ型を返すための方法がありますか?私は彼らがシーンの背後で適切な強制をしていると思いますので、私はそうする必要はありません。

EDITplunk here

+1

問題を示すplunkrを作成できますか? – pixelbits

+0

@pixelbits完了 –

+0

なぜ私が説明できないほどdownvotedされているかについてのいくつかの説明を得ることにも感謝します –

答えて

1

ただ、説明のビットを追加しようとする:

活字体は、ブラウザに存在しません - それは何の型強制しません、何の種類を何もチェックしない。 payment変数のタイプは、入力タイプと角度(Hung Cao説明として)によって決定されます。

Typescriptは、タイプを確認して、エディタやJavaScriptのコンパイル時に役立ちます。

あなたはTSを使用してライブラリを作成し、宣言した場合:

const myVariable: SomeClassOfMine; 

をして、私は別のプロジェクトでそれを使用し、私が行うことができます。

myVariable = 1; 

と警告/エラーはありません。実際にはブラウザはあなたのSomeClassOfMineタイプの知識はありませんです。

TSはブラウザ(またはノード)に存在しないことを覚えておいてください。それはまだJSです。

+0

プログラミングにはちょっと遅れているかもしれませんが、それは当時の私にとっては意味がありませんでしたが、説明に感謝します –

2

これは活字体のバグではありませんが、これは正しい動作です。

あなたはタイプ= "数"を参照してください

<input type="number" placeholder="Payment" [(ngModel)]="payment" value="" />

のように、あなたの入力を宣言した場合、それは数になります。

ところで、私はあなたをdownvoteていない:P

関連する問題