2017-03-02 153 views
1

我正在用TypeScript開發Angular 2中的一個小應用程序,並且遇到了問題。使用TypeScript從表單輸入獲取值

假設我有一個變量num聲明爲一個數字,我使用ngModel將它綁定到窗體中的輸入框。當我將值返回並檢查類型時,它現在實際上是一個字符串,而不再是一個數字,所以當檢查num >= 0時,如果輸入包含空字符串(因爲正常的JavaScript行爲),它實際上會返回true

現在這是一個在TypeScript中的錯誤還是有一些方法來獲取正確的數據類型?我希望他們在幕後做適當的強制,所以我不必這樣做。

編輯plunk here

+1

你可以創建一個演示該問題的plunkr嗎? – pixelbits

+0

@pixelbits完成 –

+0

我也希望得到一些解釋,爲什麼我莫名其妙地downvoted –

回答

1

只是爲了嘗試添加一點的解釋:

打字稿不會在瀏覽器中存在的 - 它確實沒有強制類型轉換,沒有類型不檢查任何東西。 payment變量的類型由輸入類型和Angular決定(如Hung Cao解釋)。

Typescript只在編輯器和javascript編譯階段通過檢查您的類型來幫助您。

如果您在使用TS創建一個庫,並聲明:

const myVariable: SomeClassOfMine; 

,然後我用它在不同的項目,我可以這樣做:

myVariable = 1; 

而且不會有任何警告/錯誤。事實上瀏覽器有沒有知識你的SomeClassOfMine類型的

只要記住TS在瀏覽器(或節點)中不存在,它仍然是JS。

+0

也許現在對我來說編程只是爲時已晚,它對我來說當時沒有任何意義,但感謝解釋 –

2

這不是打字稿中的錯誤,這是一個正確的行爲。

如果您聲明輸入像

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

類型= 「數字」那麼這將是一個數字。

順便說一句,我沒有downvote你:對