对函数参数定义"undefined and null"值吗



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

print(param: string | undefined) {
console.log(param);
}

所以我的问题是,将undefinednullstring(或任何数据类型(一起定义为参数类型值得吗?因为字符串本身可以是CCD_ 6或CCD_。

如果我从函数参数中删除CCD_ 8,那么它的行为相同。

print(param: string) {
console.log(param);
}

您认为undefinednull可以通过默认编译器设置分配给string是正确的。

然而,typescript支持选项strictNullChecks,这正意味着nullundefined不再可分配给任何类型。此时,显式添加undefined以仍然允许调用方传入潜在的nullundefined值是有意义的。

你可以在这里阅读更多关于这个主题的

当您使用--strictNullChecks标志时,typescript的编译器不允许您将nullundefined分配给变量,如果它没有启用它们(例如,代码var s: string = null不会编译,但代码var s: string | null = null会编译(。这个标志是为了防止出错。

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

print (param? : string) {
console.log(param);
}

这是可选参数的方式。

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

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

最新更新