繁体   English   中英

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

[英]Why I cannot set this User object to null in my Angular application?

我正在开发一个 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;
}

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM