typeScript学习-类型守卫

typeScript学习

类型守卫

为什么要用类型守卫:

类型守卫定义:在 语句的块级作用域【if 语句内或条目运算符表达式内】 缩小变量的一种类型推断的行为。

类型守卫产生时机:TS 条件语句中遇到下列条件关键字时,会在语句的块级作用域内缩小变量的类型。这种类型推断的行为称作类型守卫(Type Guard)。

类型守卫可以帮助我们在块级作用域中获得更为需要的精准变量类型。

  • 实例判断:instanceof

复制代码
class Customer {
    pay(payMethod: BankPay | MobilePay) {
        // payMethod // 为 BankPay | MobilePay
        if (payMethod instanceof BankPay) {
            // payMethod  // 为 BankPay
        } else if (payMethod instanceof MobilePay) {
            // payMethod // 为 MobilePay
        }
    }
}
复制代码

 

  • 属性或方法判断:in

class Customer {
    pay(payMethod: BankPay | MobilePay) {
        if ("xx" in payMethod) {
            // payMethod // 为 MobilePay
        }
    }
}

 

  • 类型判断:typeof

  • 字面量相等判断:==、===、≠、=≠=

function cal(num: string | number) {
    // num = num + 10 // 错误
    if (typeof num === 'number') {
        num + 3
    }
}

export { }

 

posted on   空白格k  阅读(142)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示