Я недавно сталкивался с этим примером:
state.d.ts
export interface IState {
token: string | null;
}
export const tokenReducer = (
state: IState['token'] = null,
{ type, payload }: AppAction,
): typeof state => {
switch (type) {
case 'LOGIN':
return payload;
default:
return state;
}
};
Это хорошо работает. Тем не менее, я попытался изменить это так:
const initialState: IState = {
token: null
};
export const tokenReducer = (
//state: IState['token'] = null,
state = initialState,
//state: initialState
action: AppAction,
): typeof state => {
switch (type) {
case 'LOGIN':
return action.payload;
default:
return state;
}
};
, но я получаю ошибки. Ошибка в action.payload, если я использую state: typeof initialState
или state = initialState
согласно предложению IDE:
Type 'string' is not assignable to type 'IState'.ts(2322)
Если я попытаюсь state: initialState
, тогда очевидно:
'initialState' refers to a value, but is being used as a type here. Did you mean 'typeof initialState'?ts(2749)
``
What am I doing wrong? Am I making a syntax error or is it just not allowed to define initialStates like this?