![](/img/trans.png)
[英]Best practice: Typescript: Let a customer extend an application with custom code
[英]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
類型的變量。 當您設置選項noImplicityAny
到true
在你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.