簡體   English   中英

打字稿:使用let(最佳實踐)

[英]Typescript: using let (best practice)

我正在使用TypeScript而且我是新用的,所以我有一個關於聲明變量的問題。

當我們聲明一個變量時,我們使用let name: type = value 好吧,我總是分配變量的類型:如果我想要一個String我聲明為string ,與booleans和數字相同。 只見類型any這使得任何類型的變量。

問題是:如果我將變量聲明為數字,則必須使用let myNumber: number = 23; 有必要說類型是一個數字?

如果我不這樣做,並且執行typeOf(myNumber)它返回數字,但對於TypeScript是number還是any

最好的做法是在為變量賦值時始終設置類型,或者它不重要?

Typescript將避免使用any類型的變量。 當您設置選項noImplicityAnytrue在你tsconfig.json ,它甚至給你一個錯誤,當您不指定類型,打字稿只能將類型設置為any

一般來說,當你設置的一種let作為你的榜樣?

let myNumber: number = 23;

...你明確地設置了類型。 這意味着您清楚地傳達了使此變量成為number意圖。 分配非數字值時,您將收到錯誤。 使用顯式類型聲明所有變量沒有任何問題,因為這只會提高代碼的清晰度。

另一種選擇是隱式輸入變量。 只有在聲明時為變量賦值時才能執行此操作:

let myNumber = 23;

由於您為變量指定了數字文字,因此Typescript可以推斷出變量的類型,並將其視為數字。 在某些情況下,覆蓋推理是有用的,例如對於聯合類型:

let myNumberOrText: number | string = 23;

如果noImplicitAny設置為true ,則禁止any隱式輸入。 所以...

let myAny = { FirstName: "John", LastName: "Doe" };

...會導致錯誤,因為它會隱式輸入any 仍然允許顯式版本。 所以你可以寫...

let myAny: any = { FirstName: "John", LastName: "Doe" };

...雖然在Typescript中你最好聲明一個類或接口並用它來輸入(假設你已經聲明了一個Person類型):

let myPerson: Person = { FirstName: "John", LastName: "Doe" };

Typescript的重點是向JavaScript引入靜態類型。 如果您使用類型any聲明變量,那么靜態類型將無法獲得優勢,您可以使用純JavaScript。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM