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

Javascript 如何将0传递给TypeScript可选参数?,javascript,typescript,optional-parameters,Javascript,Typescript,Optional Parameters,以下函数输出“null” 我知道0==null为false,所以不应该打印0吗?将检查从(x | null)更改为x!==无效的x:null 由于0是错误的,但不等于null如果您试图确保x的默认值应为null,如果没有传递任何内容,则可以执行此操作 function foo(x: number | null = null): void { alert(x); } foo(0); //逻辑与运算 true && true; // Result=>true tru

以下函数输出“null”


我知道0==null为false,所以不应该打印0吗?

将检查从
(x | null)
更改为
x!==无效的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
//逻辑或运算

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
或者

如需进一步澄清:

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为false

x || null //Result=>null

因此,我们可以得出结论,警报将显示

它不应该
0
是falsy+是否可以接受0的值?我用它来表示也可以是0的值,我的代码适用于除参数为0以外的所有情况。
x
等于代码中的
0
。@zerkms是的,但它打印“null”。@AnthonyYershov这是正确的。如果
x==0
,则
x | | null
等于
null
。根据您的目标,您可能还希望将其展开,包括
&!伊斯南(x)
。您可以在执行null检查的同时排除NaN。@y2bd
isNaN
确实不是您想要的。它检查一个特殊的
数字。NaN
值。它仍然打印空值:(我要求显示您的实际当前代码,因为建议的更改在@AnthonyYershov下工作得非常好,它输出的
null
。您读过您的代码吗?