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