TypeScript中 ?, ??, !, !! 的使用

1 【?】 属性 或 参数 中使用 ? 表示该属性或参数为【可选项】

他会先判断 name 属性是存在,存在就去访问他的值,不存在就返回undefined

const user = null;
console.log(user.name)   // 以前会报错
//现在,他会先判断 name 属性是存在,存在就去访问他的值,不存在就返回undefined
console.log(user?.name)   

2 【!】属性或参数中使用!表示表示强制解析(告诉typescript编译器,这里一定有值)

?让类属性为可选属性,可以不传,!可以当这个属性不存在时返回undefined而不是报错

interface IDemo {
    x?: number //该属性是可选,可以不传
}
const demo = (parma: IDemo) => {
    const y:number = parma.x!  // !可以将 当这个x属性为空将返回undefined而不是报错
    return y
}
console.log(demo({}))          // 没有传x, 输出: undefined
console.log(demo({x: 3}))      // 输出: 3

3 【||】 或运算符,属性不在就返回右边值,在就返回它自己的值

// 如果为undefined,返回y=1,如果不为undefined,则返回parma.x的值
const y:number = parma.x || 1;
console.log(y); // 输出: 1
const z:number = parma2.x || 1;
console.log(z); // 输出: 3

3 【!!】 表示将把表达式 【强行转换】 为 bool

0为false,非零为true

console.log(!!(0 + 0)) // 输出: false
console.log(!!(3 * 3)) // 输出: true
console.log(!!('aaaa')) // 输出: true
console.log(!!('')) // 输出: false

4 【??】 ??表示只有当左侧为null和undefined时, 才会返回右侧的数

0为false,非零为true

const foo = null ?? 'default string';
console.log(foo); // 输出: "default string"
const foo = undefined ?? 'default string';
console.log(foo); // 输出: "default string"

const baz = 0 ?? 42;
console.log(baz); // 输出: 0

下面是?、??、!、!!的基本介绍:
属性或参数中使用?表示该属性或参数为可选项
??表示只有当左侧为null和undefined时, 才会返回右侧的数
属性或参数中使用!表示表示强制解析(告诉typescript编译器,这里一定有值)
变量前使用!表示取反, 变量后使用!表示类型推断排除null、undefined从而使null 和undefined类型可以赋值给其他类型并通过编译
!!表示将把表达式强行转换为逻辑值.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值