自動類型不是任意類型,是通過對右側數值/對象類型分析來賦給左側類型值。
let a = 123;
let b = a;
a自動被賦予了數值類型,所以a為number類型
b被賦予和a相同的值,b設置為a的類型,也就是number
let b;
如果直接設置b并且不賦值,則b為any類型。在開發中盡量避免any類型,因為這個類型對各種操作都在編譯時報錯,只能在運行時報錯,這樣就很難發現某個小角落的錯誤。
你可以用繼承或者接口的方式來容納一個多變的對象,如果實在需要用到any,則最好在傳遞結束后,將對象的類型強制轉換為邏輯類型
function doSome(obj:any){
let b = <number>obj;
}
ts中的let和c++中的auto基本用法一致,都是通過對右側值或者對象的類型來賦于類型的。c++中的void和any用法類似,但c++中用void會更加危險,風險更大。在obj-c中對應let的是id,用法也相同。