2017-02-08 8 views
0

TypeScript에서 setter를 사용하여 개체의 각 속성을 설정하는 방법은 무엇입니까? setter 및 getters를 사용하여 TypeScript에서 객체 속성을 올바르게 설정하는 방법은 무엇입니까?

export class AuthService { 
    private _user:User; // User is my model 

    constructor(...){} 

    public get user() 
    { 
     return this._user; 
    } 

    public set user(value){ 
     this._user = value; 
    } 
... 

그리고 어디 설정

오류를 줄 때 :

this.authService.user.id = data.userId; 
this.authService.user.isLoggedIn = 'true'; 

더 :

사용자 모델 :

export class User { 
    constructor(
     public email: string, 
     public pass: string, 
     public id?: string, 
     public fname?: string, 
     public lname?: string, 
     public isLoggedIn?: string){} 
} 

오류 : Cannot set property 'id' of undefined

+0

... 오류가 무엇인가요? 또한 사용자 모델은 무엇입니까? – alebianco

+0

@alebianco 업데이트 : 특정 코드 문제를 해결하고 싶지만 setter를 사용하여 객체 소품을 설정하는 올바른 방법을 배웁니다. – BenRacicot

+0

위의 코드에서'this._user'가 올바르게 정의되었는지는 분명치 않습니다. 오류를 읽으면 오류가 아닌 것으로 확신 할 수 있습니다. 가장 중요한 부분 인'생성자 (...) {}'를 생략하면 도움이되지 않습니다. – estus

답변

1

요 당신이 부를 것이다 각 속성

public set id(value){ 
    this._user.id = value; 
} 

public set isLoggedIn(value){ 
    this._user.isLoggedIn = value; 
} 

에 대한 개별 세터가, u는 세터로 전체 user 개체를 전달해야하지만 당신은

this.authService.user = { 
    id: data.userId, 
    isLoggedIn: true 
}; 

또는 사용자의 모든 다른 속성에 대한 액세스를 필요 따라서

this.authService.id = data.userId; 
this.authService.isLoggedIn = 'true'; 
+0

'fname'과 같이 객체의 다른 소품은 값 또는 null로 설정해야합니까? – BenRacicot

+0

@BenRacicot은 꼭 필요한 것은 아니지만 가장 먼저 사용자 모델을 올바르게 인스턴스화해야합니다. 그런 다음 응용 프로그램의 수행 방식에 따라 달라집니다 –

1

오류 메시지가 존재하지 않는 개체에 특성을 설정하려고합니다.

this.authService.user === null의 경우 속성을 설정할 수 없습니다.

어딘가에 new User(...)을 먼저 만들고이를 this.authService.user에 할당하면 필요에 따라 속성을 변경할 수 있습니다.