空值类型检查
P粉896751037
P粉896751037 2023-08-03 11:34:29
[JavaScript讨论组]

我刚刚在服务中编写了一个方法,但是遇到了类型提示我可能返回空值的问题,尽管我已经在if语句块中进行了空值检查。

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;
    }

如果用户变量为空,我希望抛出异常,如果不为空,则返回UserEntity。

如果我在那里输入两个感叹号,问题就解决了。


if (!!user) { // checking for null
            throw new NotFoundUser(`Not found user`);
}

但是如果我在控制台中输入!!null,它将返回false,所以在这种情况下,我永远不会进入抛出异常的情况。为什么会出现这种行为?

P粉896751037
P粉896751037

全部回复(1)
P粉267791326

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号