1.任意值类型
any类型允许被赋值为任意类型
可以认为,声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值。
**变量如果在声明的时候,未指定其类型,那么它会被识别为任意值类型(any)!**对比 类型推论😁:
2. 联合类型Union Types
let union :string | number
当 TypeScript 不确定一个联合类型的变量到底是哪个类型的时候,我们只能访问此联合类型的所有类型里共有的属性或方法:
function getLength(something: string | number): number {
return something.length;
}
// number上没有length属性 所以不是共有属性 报错!!
function getString(something: string | number): string {
return something.toString();
}
// 准确!
联合类型在被赋值时 会根据**类型推论**的规则推断出一个类型:
let myFavoriteNumber: string | number;
myFavoriteNumber = 'seven';
console.log(myFavoriteNumber.length); // 5 准确 此时被推断为string类型,string上有length属性
myFavoriteNumber = 7;
console.log(myFavoriteNumber.length); // 编译时报错 此时被推断为number类型,number上没有length属性