TS中三个奇怪的符号:!、?? 、?.

ts断言:有非空断言、类型断言(手动指定一个类型)

!非空断言符号

忽略null和undefined类型

function myFunc(maybeString: string | undefined | null) {
  const onlyString: string = maybeString; // Error
  const ignoreUndefinedAndNull: string = maybeString!; // Ok
}

调用函数时忽略undefined类型

type NumGenerator = () => number;

function myFunc(numGenerator: NumGenerator | undefined) {
  const num1 = numGenerator(); // Error
  const num2 = numGenerator!(); //OK
}

确定赋值断言 :

  @shopInfo.State("performance")
  performance!: Performance;

?.运算符(Optional Chaining)

核心功能:如果遇到 null 或 undefined 就可以立即停止某些表达式的运行
可选元素访问

function tryGetArrayElement<T>(arr?: T[], index: number = 0) {
  return arr?.[index];
}

可选链函数的调用

kafkaFormRef.current?.handleSkip();

?? 空值合并运算符

操作数
运作规则:当左侧操作数为 null 或 undefined 时,其返回右侧的操作数,否则返回左侧的操作数。

Js的逻辑或 || 运算符:
运作规则:逻辑或会在左操作数为 falsy 值时返回右侧操作数。

短路
运作规则:当空值合并运算符的左表达式不为 null 或 undefined 时,不会对右表达式进行求值。

  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值