Typescript(二) 类型断言和非空判断
我们在获取类型的时候为了方便 可以使用类型断言来判定它是那一类类型
关键字 as
const getLength = (target: number | string): number => {
if ((target as string).length) {
return (target as string).length;
} else {
return Number(target);
}
};
console.log(getLength("222"));
console.log(getLength(222));
这里特别注意的不能使用 target as string 来判断
必须用(target as string).length 来判断 as 只不过就是强制把变量的类型转变为你想要的类型,不能作为判断的依据
非空断言 !
它表示 我这个值存在,肯定不是null 或者undefined
- 在上下文中当类型检查其无法断定类型的时候,一个新的后缀表达式操作符
!来断言该类型不是 null 或 undefined - 非空断言操作符 ! 可以放置在引用表达式的末尾,以断言表达式引用对象为非 null 或非 undefined 类型。
- 非空断言操作符 ! 可以用来断言一个表达式是非 null 和非 undefined 类型,但是不能断言一个表达式一定存在。
可有可无 ?
- 它表示 我这个值可能有,也可能没有
选链操作符 ?. 允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。?. 操作符的功能类似于 . 链式操作符,不同之处在于,当链条上的某个属性值为 null 或 undefined 时,它会立即停止运算,而不会抛出错误。
interface obj1 {
name: string;
age?: number;
address: {
city: string;
street: string;
houseNum: number;
};
}
const obj: obj1 = {
name: "张三",
age: 18,
address: {
city: "北京",
street: "长安街",
houseNum: 100,
},
};
const obj2: obj1 = {
name: "李四",
address: {
city: "北京",
street: "长安街",
houseNum: 100,
},
};