这里说下我的感觉,name as string就类似于 name:string = 'sgje' 和这里的 :string 一样的
只是他在定义之前没有明确的定义类型 name = 'sgje'
在调用函数使用的时候 name.indexof('8') 使用
// 使用尖括号语法进行类型断言
const index1 = (<string>name).indexOf('8');// 或者使用 as 关键字
const index2 = (name as string).indexOf('8');
来告诉编译器,明确的说明这个变量是string类型
在特定的环境中,我们会比TS知道这个值具体是什么类型,不需要TS去判断,简单的理解就是,类型断言会告诉编译器,你不用给我进行检查,相信我,他就是这个类型
共有两种方式:
- 尖括号
- as:推荐
//尖括号let num:any = '小杜杜'let res1: number = (<string>num).length; // React中会 error// as 语法let str: any = 'Domesy';let res: number = (str as string).length;
但需要注意的是:尖括号语法在React中会报错,原因是与JSX
语法会产生冲突,所以只能使用as语法