Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 是否值得为函数参数定义“未定义和null”?_Angular_Typescript - Fatal编程技术网

Angular 是否值得为函数参数定义“未定义和null”?

Angular 是否值得为函数参数定义“未定义和null”?,angular,typescript,Angular,Typescript,在一些示例代码中,我将undefined和null视为带有管道的函数参数,如下所示 print(param: string | undefined) { console.log(param); } 所以我的问题是,是否值得将undefined和null与stringor任何数据类型一起定义为param类型?因为字符串本身可以为null或未定义 若我从函数参数中删除了undefined,那个么它的行为是相同的 print(param: string) { console.log(para

在一些示例代码中,我将undefined和null视为带有管道的函数参数,如下所示

print(param: string | undefined) {
  console.log(param);
}
所以我的问题是,是否值得将undefined和null与stringor任何数据类型一起定义为param类型?因为字符串本身可以为null或未定义

若我从函数参数中删除了undefined,那个么它的行为是相同的

print(param: string) {
  console.log(param);
}
您是对的,可以使用默认编译器设置将未定义和null分配给字符串

然而,typescript支持strictNullChecks选项,这意味着null和undefined不再可分配给任何类型。此时,显式添加undefined仍然允许调用方传入可能为null或未定义的值是有意义的

您可以阅读有关主题的更多内容

您的观点是正确的,未定义和null可以通过默认编译器设置分配给字符串

然而,typescript支持strictNullChecks选项,这意味着null和undefined不再可分配给任何类型。此时,显式添加undefined仍然允许调用方传入可能为null或未定义的值是有意义的


当您使用-strictNullChecks标志时,typescript的编译器不允许您将null或undefined赋值给变量,如果它没有启用代码,那么您可以阅读更多有关该主题的内容,例如,var s:string=null不会编译,但是var s:string | null=null会编译。此标志用于防止错误。

当您使用-strictNullChecks标志时,typescript的编译器不允许您将null或undefined赋值给变量,如果它没有启用代码,例如,var s:string=null不会编译,但是var s:string | null=null会编译。此标志用于防止错误。

这取决于您想用它来做什么,大多数人使用它来声明可选参数,如果在某些情况下您得到了代码不需要的参数,您可以使用它,但我建议这样做:

这是可选参数的方式

一个简单的例子是生成密码,例如


这取决于你想用它做什么,大多数人用它来声明可选参数,如果在某些情况下你得到了一个代码不需要的参数,你可以用它,但我建议这样做:

这是可选参数的方式

一个简单的例子是生成密码,例如

print (param? : string) {
 console.log(param);
}
checkPassword (password? : string) {
 if (!password) {
   password = this.somethingToGeneratePassword();
 }
}