2015-12-11 89 views
21

我正在編寫一個大的TypeScript類,並將noImplicitAny設置爲true。有什麼辦法可以在同一行聲明多個相同類型的變量嗎?聲明多個具有相同類型的TypeScript變量

我想用「x,y:number」這樣的數字來聲明x和y。但編譯器不喜歡那個或我嘗試過的其他東西。 「x:number; y:number」有更好的選擇嗎?

回答

21

沒有任何語法能夠以比只是兩次寫入類型更好的方式來完成此任務。

+12

謝謝。這太遺憾了。對於有很多變量的Web組件,聲明每個單獨的行是一種痛苦。對於基於表單的組件尤其如此。 – user934904

-2

let notes:string ='',signatureTypeName ='';

+0

這沒有明確定義'signatureTypeName'爲'string';它隱含地是一個「字符串」,因爲它是分配給它的第一個值的類型。您最初可以將任何內容分配給'signatureTypeName'並將其編譯。例如,你可以完成'let a:string =「」,b = 4',這打敗了OP的問題,他/她表示他們希望兩個變量都是相同的類型。 – mgthomas99

0

如果您可以接受孤兒變量。 Array destructuring可以做到這一點。

var numberArray:number[]; //orphan variable 
var [n1,n2,n3,n4] = numberArray; 
n1=123; //n1 is number 
n1="123"; //typescript compile error 

更新:這裏產生,瞄準的ECMAScript 6

var numberArray; //orphan variable 
var [n1, n2, n3, n4] = numberArray; 
n1 = 123; //n1 is number 

當目標的ECMAScript 5時,喜歡Louis下面說,這不是漂亮的JS代碼生成的JavaScript代碼。

var numberArray; //orphan variable 
var n1 = numberArray[0], n2 = numberArray[1], n3 = numberArray[2], n4 = numberArray[3]; 
n1 = 123; //n1 is number 
+0

你可以通過var [n1,n2,n3,n4] = []作爲數字[]來消除孤立變量;'但我仍然不喜歡這種方法,因爲無論是用你的代碼還是用我的修改,'tsc'爲var [n1,n2,n3,n4] = ...'行生成4個無用的賦值。 – Louis

1

只是補充說,即使你做到以下幾點:

let notes, signatureTypeName: string; 

它仍然無法正常工作。在這種情況下,notes被聲明爲any類型,signatureTypeName類型爲string。您可以通過簡單地懸停在變量上來驗證所有這些,例如在Visual Studio Code中。聲明的類型出現在彈出窗口中。

相關問題