Angular 应用一直说 _user 未定义

Angular app keeps saying _user is not defined

我正在使用获取流教程使用 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 setting strictNullChecks 设置为 false,这样您就不会收到错误消息。你仍然会有未定义的用户,这意味着它可能会在运行时崩溃你的脚本,所以我不会那样做。