#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 is now props<{userToken: AuthToken}>()
props<AuthToken>()
.
Ошибка возникает в редукторе, когда я пытаюсь получить доступ к геттеру и делаю следующее
action.idToken
Теперь он возвращается неопределенным
В консоли chrome я вижу свойство _idToken, но не идентификатор получателя().
Почему это происходит?