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 时,不会对右表达式进行求值。

    原文作者:Jasmine_jiamei
    原文地址: https://blog.csdn.net/weixin_43827779/article/details/120344001
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞