Я использую реагировать с редуксом.В настоящее время я конвертирую свою кодовую базу в скрипт типа и испытываю трудности с типами, передаваемыми в мои действия по редукции.
Я вижу следующую ошибку:
Свойство 'access_token' не существует для типа 'строка'.
Я использую any
поэтому я удивлен, что он все еще показывает ошибку.
См. код ниже.Что-то выскакивает у людей, которые выглядят неправильно?
interface DispatchProps {
fetchTokenSuccess: (token: any) => void;
getRequest: (token: any) => void;
}
class App extends React.Component<DispatchProps> {
componentDidMount() {
let token = JSON.parse(localStorage.getItem('token'));
console.log(token.access_token); // this logs the token
this.props.fetchTokenSuccess(token);
this.props.getRequest(token.access_token); // the error is being generated from here
}
...rest of component
}
const mapDispatchToProps = dispatch => {
return bindActionCreators({
fetchTokenSuccess,
getRequest
}, dispatch);
};
Мои действия выглядят так, и я чувствую, что это ошибка.
export const getSuccess = (bestResults: []) => {
return {
type: 'GET_SUCCESS',
bestResults
};
};
export const searchError = (err: any) => {
return {
type: 'GET_ERROR',
err
};
};
export const getRequest = (accessToken: any) => {
return dispatch => {
const request = new Request(url, {
headers: new Headers({
'Authorization': 'Bearer ' + accessToken
})
});
fetch(request).then(res => {
return res.json();
}).then(res => {
console.log(res)
dispatch(getSuccess(res.data.children));
}).catch(err => {
dispatch(searchError(err));
});
};
};
и мой редуктор выглядитэто:
const initialState = {};
interface Action {
type: string;
bestResults: []
}
export const listingReducer = (state = initialState, action: Action) => {
switch (action.type) {
case "GET_SUCCESS":
return {
...state,
bestResults: action.bestResults,
searchError: false
};
case "GET_ERROR":
return {
...state,
searchError: true
};
default:
return state;
}
};