如何检查字符串是否为 NULL?
2020-05-09
1861
我是 Typescript 新手,不确定如何检查字符串参数是否为
null
。
下面的
concat
函数被导出供其他 Typescript 模块使用。如果任一字符串参数为
null
,我希望生成错误消息。我这样做对吗?
export const concat = (a: string, b: string) => {
if ((typeof a === null) || (typeof b === null)) { throw new Error(' A is missing')}
if ((a === '') || (b === '')) { throw new Error(' A is missing')}
return a.concat(b);
}
describe ('concat', () => {
it('Should concat these two strings', ()=> {
const result=concat('He','llo')
expect(result).to.equal('Hello');
})
});
2个回答
Typescript
是
带有可选类型断言和分层检查的 Javascript。您可以以完全相同的方式检查
null
。
但 Typescript 为您提供了另一种选择:首先禁止
null
。事实上,这就是您的函数参数声明已经做的事情:
(a: string, b: string)
表示
a
和
b
都必须是字符串,而不能是
null
。
例如,如果您将其更改为
(a: string | null, b: string)
,则意味着
a
可以为 null,但
b
仍然不能为 null。
因此,如果您保持函数参数的原样,则无需执行
null
检查。如果您想要允许空值,则需要将
| null
添加到类型断言中。
话虽如此,如果您预计库中的其他一些用户将使用 Javascript 而不是 Typescript,并且您想要防止他们传入
null
,那么您将保留空值检查,即使它们对于 Typescript 来说是多余的。
如果我正确理解了您的问题,请告诉我。
Inigo
2020-05-10
export const concat = (a: string, b: string) => {
if ((a == null) || (b == null)) { throw new Error('A is missing')}
if ((a === '') || (b === '')) { throw new Error('A is missing')}
return a.concat(b);
}
只需删除
typeof
。
使用
==
可以检查输入是否为
null
或
undefinded
。
QmlnR2F5
2020-05-09