为什么我不能在我的 Angular 应用程序中将此用户对象设置为 null?

安德里亚诺比利

我正在开发一个 Angular 应用程序,我发现了以下问题。

我有一个这样的服务类:

export class AuthService {
    authchange: new Subject<boolean>();
    private user: User;

    registerUser(authData: AuthData) {
        this.user = {
            email: authData.email,
            userId: Math.round(Math.random() * 1000).toString()
        };
    }

    login(authData: AuthData) {
        this.user = {
            email: authData.email,
            userId: Math.round(Math.random() * 1000).toString()
        };
    }

    logout() {
        this.user = null;
    }

    getUser() {
        return { ...this.user };
    }

    isAuth() {
        return this.user != null;
    }
}

基本上我声明了这个自定义用户对象:

private user: User;

然后我有这个方法:

logout() {
    this.user = null;
}

当执行注销操作时,我尝试将此对象设置为null 。问题是我在编译时收到此错误:

Error: src/app/auth/auth.service.ts:25:9 - error TS2322: Type 'null' is not assignable to type 'User'.

25         this.user = null;

我正在学习 Udemy 课程,所以代码应该是正确的。

这是我的用户的代码:

export interface User {
    email: string;
    userId: string;
}

为什么我会收到此错误?我错过了什么?我该如何尝试修复它?

瓦莱里·祖布科夫

这是正确的行为。如果您在 中设置 null this.user,那么您的类型应该是:private user: User | null;private user?: string;(如果您使用未定义)。因为用户可以为空。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章