自动类型不是任意类型,是通过对右侧数值/对象类型分析来赋给左侧类型值。
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,用法也相同。