我如何检查是否提供了可选参数?

给定一个具有可选参数的函数:

function DoSomething(a, b?) { /** Implementation */ } 

我如何确定是否从函数体内提供了一个可选参数? 目前,我能想到的最好的方法是:

 typeof b === 'undefined' 

但这是一种混乱,不能直接阅读。 由于TypeScript提供了可选的参数支持,我希望它也有一个直观的方法来检查是否提供了一个参数。

如上例所示,我不介意可选参数是否显式设置为undefined或根本没有提供。

用googlesearch“未定义的打字稿”后,我在结果的顶部看到了这个问题,但Evan Trimboli给出的答案并没有解决我的问题。

这是最终解决我的问题的答案 。 下面的代码就是我所说的。 它应该在值等于nullundefined情况下工作:

 function DoSomething(a, b?) { if (b == null) doSomething(); } 

你可以简单地添加一个可选参数,像这样的默认值

 function DoSomething(a, b: boolean=null) { if(b == null) { //parameter was not set } else { //parameter is true or false...no other option available } } 

TypeScript的util模块的functionisUndefined() 。 你可以像这样使用它。

 import {isUndefined} from "util"; class A { test(b?: string): string { if (isUndefined(b)) { return "UNDEFINED"; } else { return ("DEFINED" + b); } } } 

你可以检查一下这个值是否是未定义的:

 var fn = function(a, b) { console.log(a, b === undefined); }; fn(1); fn(2, undefined); fn(3, null);