Получатель углового машинописного текста возвращает неопределенное значение

#angular #typescript

Вопрос:

У меня есть этот урок:

 export class AuthToken {

    constructor(
        public email: string
        , public displayName: string
        , public expiresIn: number
        , public expirationDate: Date
        , public localId: string
        , public registered: boolean
        , public kind: string
        , private _idToken: string
        , private _refreshToken: string
    ) {
    }

    get idToken(): string {
        if (!this.expiresIn || new Date() > this.expirationDate) {
            return '';
        }

        return this._idToken;
    }

    get refreshToken(): string {
        return this._refreshToken;
    }
}
 

В особом случае, когда я пытаюсь получить доступ к получателю ‘idToken ()’, он просто возвращает «неопределенный».
Я хотел бы понять, почему это происходит, так как я придумал обходной путь, но я не понимаю, почему теоретически это работает.

Сначала я покажу, как я заставил код работать:

1 — Вызов действия NgRx: (UserToken имеет тип authToken)

 this.store.dispatch(AuthActions.Login({ userToken: tempUser }));
 

2 — Действие

 export const Login = createAction(
    'LOGIN',
    props<{userToken: AuthToken}>()
);
 

3 — На редукторе реализована простая логика

 on(AuthActions.Login,
        (state, action) => {
            return {
                ...state,
                userToken: new AuthToken(action.userToken.email, action.userToken.displayName, action.userToken.expiresIn, action.userToken.expirationDate, action.userToken.localId, action.userToken.registered, action.userToken.kind,
                    action.userToken.idToken, action.userToken.refreshToken)
            }
        }),
 

Таким образом, код, как показано выше, работает идеально.

Однако если я немного изменю действие ВХОДА в систему, возникнет проблема:

 export const Login = createAction(
    'LOGIN',
    props<AuthToken>()
);
 

Note that props<{userToken: AuthToken}>() is now props<AuthToken>() .

Ошибка возникает в редукторе, когда я пытаюсь получить доступ к геттеру и делаю следующее

 action.idToken
 

Теперь он возвращается неопределенным

В консоли chrome я вижу свойство _idToken, но не идентификатор получателя().

Почему это происходит?