类型断言与类型守卫
联合类型
// 自动进行了类型推论,推论为string,因为我们的'str'是一个字符串
let str = 'str'
// 此时再将它赋值为数字,就会报错
// str = 123
let numberOrString: number | string
类型断言
先强行将未知参数看做某个类型进行逻辑处理,如果逻辑处理有问题,则说明不是该类型,再强行看做另一个类型进行处理
function getLength(input: string | number): number {
// 无论是string还是number都先断言为string来进行处理
const str = input as string
if (str.length) {
return str.length
} else {
// 如果没有length再断言为number处理
const number = input as number
return number.toString().length
}
}
类型守卫
先判断类型,再根据不同的类型进行不同的逻辑处理
function getLength2(input: string | number): number {
if (typeof input === 'string') {
return input.length
} else {
return input.toString().length
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!