7

私は LoginService にisLoggedIn型のブール値BehaviorSubjectを getter および setter 関数と一緒に実装して、値を Observable として取得したり、BehaviorSubject を介して変数を正しく設定したりしようとしています。これは機能していますが、TSLint で「Type not assignable」と「Dublicate identifier」に関する 2 つのエラーがスローされます。TSLintが文句を言わずにそれを定義する正しい方法は何でしょうか。

これは、上記のコードの簡素化されたバージョンです。

@Injectable()
export class LoginService {
  public isLoggedInSource = new BehaviorSubject<boolean>(false);
  public isLoggedIn: Observable<boolean> = this.isLoggedInSource.asObservable(); // Duplicate identifier 'isLoggedIn'.

  constructor(private http: Http) {}

  set isLoggedIn(logged): void { // Duplicate identifier 'isLoggedIn'.
    this.isLoggedInSource.next(logged);
  }

  get isLoggedIn(): Observable<boolean> { // Duplicate identifier 'isLoggedIn'.
    return this.isLoggedInSource.asObservable();
  }

  logout() {
    this.isLoggedIn = false; // Type 'boolean' is not assignable to type 'Observable<boolean>'.
  }

  login(body) {
    return this.http.post('/login', body)
        .map(res => {
                if (res.token) {
                  this.isLoggedIn = true; // Type 'boolean' is not assignable to type 'Observable<boolean>'.
                }
                return res;
              })
        .catch(err => Observable.throw(err););
  }
}
4

1 に答える 1