搜索

首页  >  问答  >  正文

空值类型检查

<p>我刚刚在服务中编写了一个方法,但是遇到了类型提示我可能返回空值的问题,尽管我已经在if语句块中进行了空值检查。</p> <pre class="brush:php;toolbar:false;">public async getUserById(id: string): Promise<UserEntity> { const user = this.userRepository.getById(id); // returns <UserEntity | null> if (!user) { // checking for null throw new NotFoundUser(`Not found user`); } // Type 'UserEntity | null' is not assignable to type 'UserEntity'. // Type 'null' is not assignable to type 'UserEntity'. return user; }</pre> <p>如果用户变量为空,我希望抛出异常,如果不为空,则返回UserEntity。<br /><br />如果我在那里输入两个感叹号,问题就解决了。</p><p><br /></p> <pre class="brush:php;toolbar:false;">if (!!user) { // checking for null throw new NotFoundUser(`Not found user`); }</pre> <p>但是如果我在控制台中输入!!null,它将返回false,所以在这种情况下,我永远不会进入抛出异常的情况。为什么会出现这种行为?</p>
P粉896751037P粉896751037477 天前507

全部回复(1)我来回复

  • P粉267791326

    P粉2677913262023-08-04 10:36:33

    因为 !! 类似于 Boolean,所以在这行代码中,你做了类似于 Boolean(null) 的操作,所以你会得到 false,因为在布尔值中,null 是 false。你可以使用 user === null 来检查是否为 null。

    回复
    0
  • 取消回复