类型断言
- 我们在获取类型的时候为了方便可以使用类型断言来判定他是哪一类类型
关键字 as
js
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
类型,但是不能断言一个表达式一定存在。
ts
m[item.prop!] = '李四'
可有可无
- 可选链操作符
?.
允许读取位于连接对象链深处的属性的值,而不必明确验证链中的每个引用是否有效。?.
操作符的功能类似于.
链式操作符,不同之处在于,当链条上的某个属性值为null
或undefined
时,它会立即停止运算,而不会抛出错误。
ts
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
}
}