在一些示例代码中,我将undefined
和null
视为带有管道的函数参数,如下所示。
print(param: string | undefined) {
console.log(param);
}
所以我的问题是,将undefined
和null
与string
(或任何数据类型(一起定义为参数类型值得吗?因为字符串本身可以是CCD_ 6或CCD_。
如果我从函数参数中删除CCD_ 8,那么它的行为相同。
print(param: string) {
console.log(param);
}
您认为undefined
和null
可以通过默认编译器设置分配给string
是正确的。
然而,typescript支持选项strictNullChecks
,这正意味着null
和undefined
不再可分配给任何类型。此时,显式添加undefined
以仍然允许调用方传入潜在的null
或undefined
值是有意义的。
你可以在这里阅读更多关于这个主题的
当您使用--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();
}
}