有些时候,我们需要做一些“自己比编译器更清楚的知道自己在做什么”,这个时候就用到断言,告诉编译器:没错,就是这样的,就是要这么干。编译器也就假设:嗯,这个程序员已经进行了相关检查,不会有事的。
类型断言只能够「欺骗」TypeScript 编译器,无法避免运行时的错误。
语法: 值 as 类型 或者 <类型>值
// 类型断言有两种形式。 其一是“尖括号”语法:
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;//断言写法
let fruit:Array<string|number> = ['apple', 'banana', 'pear', 20];//数组写法
// 另一个为as语法:
let someValue1: any = "this is a string";
let strLength2: number = (someValue as string).length;//将someValue当作一个字符串进行使用
// someValue1.length是any类型得
// strLength2.length是number类型得
// 类型断言不是类型转换,断言成一个联合类型中不存在的类型是不允许的。
// 网络请求可以使用
// async function fn():any {
// let res=await axios("/info")
// return res.data
// }
// let re=fn()
// 因为不确定axios请求下来的数据是什莫类型得,所以通常把它的返回值设置成any类型的