开发者问题收集

如何检查字符串是否为 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) 表示 ab 都必须是字符串,而不能是 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 。 使用 == 可以检查输入是否为 nullundefinded

QmlnR2F5
2020-05-09