[英]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.