2013-06-22 53 views
2

我想要做一些簡單的數學,應該是從request.ReponseText返回的數字和輸入到文本框中的數字。下面是代碼如何讓Typescript將數字識別爲數字?

//var storedMiles : number = new Number(request.responseText); 
var storedMiles = new Number(request.responseText); 
var enteredMiles = parseInt((<HTMLTextAreaElement>document.getElementById("txtMiles")).value); 
var intervalMiles = (enteredMiles - storedMiles); 

,我從打字稿編譯得到的錯誤是:

The right-hand side of an arithmetic operation must be of type 'any', 'number' or an enum type. 

編譯器把波浪線在var intervalMiles = (enteredMiles - storedMiles);線下enteredMiles

我在文檔中找不到任何有關如何糾正該錯誤的內容。我也沒有找到辦法自己做轉換。 TypeScript編譯器需要將enteredMilesstoredMiles作爲相同的數字「類型」來處理,以便我可以進行數學計算?

+0

我不知道TypeScript,但不''storedMiles'一個對象?爲什麼不在'responseText'上使用'parseInt'? – Prinzhorn

+1

'var storedMiles:number = + request.responseText'是否工作? –

+0

Prinzhorn我最初嘗試將parstInt放在storedMiles上,但我做錯了。我試過parseInt(new Number(request.responseText));並無法讓它工作。 –

回答

6

這是因爲Number與Number不同。下面將解決這個問題:

var storedMiles = parseInt(request.responseText); 

完整代碼(也與基數爲史蒂夫指出):

var storedMiles = parseInt(request.responseText,10); 
var enteredMiles = parseInt((<HTMLTextAreaElement>document.getElementById("txtMiles")).value,10); 
var intervalMiles = (enteredMiles - storedMiles); 

更多的解釋:

下面是一些代碼向您展示一個基本號碼和號碼之間的區別:

var num = 3; 
var Num = new Number(3); 

console.log(typeof num); // number 
console.log(typeof Num); // object 

Try it

+1

不要忘記將基數參數傳遞給parseInt以避免數據意外誤解... parseInt(myString,10) - 這可以防止ECMAScript 3瀏覽器將以0開頭的數字解釋爲八進制數。 – Fenton

+1

謝謝Steve,補充說。我只是懶惰:) – basarat