any:
可以用来指代typescript中的任何类型,也就是说如果我们用any来定义一个变量的类型,那么可以给它赋值任何类型的值,并且对于它的方法和属性的访问也不会做类型检查
let data : any;//定义变量时如果没有制定类型如:let data;那么也是any类型
data = 'hello';
console.log(typeof data);//输出string
console.log(data.length);//输出5
data = [1,2,3];
console.log(typeof data);//输出object
console.log(data.length);//输出3
data = 1;
console.log(typeof data);//输出number
console.log(data.length);//输出undefined
any给人的印象是非常的灵活,因为可以完全不用考虑变量的类型,因此有很高的可能性被不必要的使用,而这种灵活也是javascript中一个巨大的弊病,因为如此高的灵活性导致很多bug在运行时才暴露出来,而bug的解决成本是:越早暴露,解决的成本越低,越晚暴露解决的成本越高。
Typescript的Type其本身的含义就是“有类型”的script,any表面上灵活、万能,但却容易失去控制,造成大量的运行时错误,而Typescript在编译时的静态检查可以大大的降低这种类型上的错误,从而降低解决bug的成本。
unknown:
使用unknown也可以将变量指定为任意类型,但是是有一个限制,那就是通过变量使用属性和方