Angular应用一直说_user没有定义



我正在使用get流教程用Angular和Django构建一个聊天应用程序。https://getstream.io/blog/realtime-chat-django-angular/

然而,我试图运行应用程序来测试连接页面,但它一直说属性没有在构造函数中定义,这是来自state.service.ts文件。

import { Injectable } from '@angular/core';
export declare interface User {
token: string;
apiKey: string;
username: string;
}
@Injectable({
providedIn: 'root',
})
export class StateService {
constructor() {}
private _user: User;
get user(): User {
return this._user;
}
set user(user: User) {
this._user = user;
}
}

创建StateService时,_user没有赋值,所以它的值是undefined,但它的类型是User,这意味着它不能是undefined,它必须是一个具有3个特定字段的对象。这里有4种可能的解决方案:

  1. 使_user为空。如果在您的情况下使用未定义的用户是合法的场景,请按以下方式更改代码:

    private _user?: User;
    get user(): User|undefined {
    return this._user;
    } 
    set user(user: User|undefined) {
    this._user = user;
    }
    
  2. 创建虚拟用户。您可以用空字段初始化用户,以

    开头:
    private _user: User = {token:'', apiKey:'', username:''};
    
  3. 通过在构造函数中要求它来确保用户始终存在:

    constructor(user: User) { this._user=user}
    
  4. 告诉TypeScript你不在乎。你可以设置tsconfig设置strictNullChecks为false,这样你就不会得到错误消息。你仍然会有一个未定义的用户,这意味着它会在运行时使你的脚本崩溃,所以我不会这样做。

相关内容

最新更新