在 TypeScript(以及 JavaScript)中,??、?: 和 ?. 是三种不同的操作符,它们各自有其特定的用途。
?? (Nullish Coalescing Operator)
这个操作符返回其左侧的操作数(operand)如果它不是 null 或 undefined,否则返回其右侧的操作数。
const value1 = null;
const value2 = "default";
const result = value1 ?? value2; // result 会是 "default"
?: (Conditional (Ternary) Operator)
这个操作符是一个三元操作符,它根据条件表达式的结果返回两个可能的值中的一个。
const condition = true;
const valueIfTrue = "true";
const valueIfFalse = "false";
const result = condition ? valueIfTrue : valueIfFalse; // result 会是 "true"
?. (Optional Chaining Operator)
这个操作符允许你在读取对象属性时,如果中间的某个属性不存在,则返回 undefined 而不是抛出错误。
const obj = {
nested: {
property: "value"
}
};
const value = obj?.nested?.property; // value 会是 "value"
const undefinedValue = obj?.nonExistent?.property; // undefinedValue 会是 undefined,不会抛出错误
这些操作符在 TypeScript 和 JavaScript 中非常有用,它们可以帮助你更简洁、更安全地编写代码。