如果想要覆盖 ts 的类型推断,那么可以使用类型断言,这好比告诉编译器:我知道自己在干什么!
但是类型断言是不安全的
非空断言
let a: string;a!.slice(0);
类型断言的局限
类型断言要求两个类型 S 和 K(S 和 K 需要为父子集关系)
比如以下两个毫无关系的类型 string,number,断言会报错
let str: string = '123'(str as number).toFixed(2); // 这里会有报错提示
正确的写法
type S = {name: string;age: number;}type K = {name: string;}let s: S = {name: 'alex',age: 30};(s as K).name
双重断言
双重断言可以解决局限性,可是不建议使用
let str: string = '123';(str as any as number).toFixed(2);
?? 操作符
?? 操作符在 js 中就适用,表示第一个为 null 或者 undeifned,则返回第二个,否则返回第一个
null ?? 2
