如何将 0 传递给 TypeScript 可选参数?

How to pass 0 to TypeScript optional parameters?

下面的函数打印出"null"

function foo(x?: number): void {
  alert(x || null);
}

foo(0);

我知道 0==null 是错误的,所以这不应该打印 0 吗?

将检查从 (x || null) 更改为 x !== null ? x : null

因为 0 是假的但不等于 null

如果您试图确保 x 的默认值应该是 null,如果没有传递任何内容,那么您可以这样做

function foo(x: number | null = null): void {
  alert(x);
}

foo(0);

//逻辑与运算

true  && true;  // Result=>true
true  && false; // Result=>false
false && true;  // Result=>false
false && false; // Result=>false

//逻辑或运算

true  || true;  // Result=>true
true  || false; // Result=>true
false || true;  // Result=>true
false || false; // Result=>false

您的警报代码基于以下规则:

false || true;  // Result=>true
false || false; // Result=>false

或者,

false || any_data;  // Result=> any_data
false || any_data; // Result=> any_data

更多说明:

alert( 1 || 0 ); // 1 (1 is truthy)
alert( true || 'no matter what' ); // (true is truthy)

alert( null || 1 ); // 1 (1 is the first truthy value)
alert( null || 0 || 1 ); // 1 (the first truthy value)
alert( undefined || null || 0 ); // 0 (all falsy, returns the last value)

所以当 x=0 时,这意味着 x 在布尔上下文中为假,

x || null //Result=>null

所以我们可以得出结论 alert 将显示 null