Когда вы создаете компонент, первый тип, который вы передаете React.Component
, является типом реквизита, а второй определяет тип состояния:
interface IState {}
interface IProps {}
class Component extends React.Component<IProps, IState> {
Когда вы делаете это:
class Github extends React.Component<{any, any}>
Вы определяете тип реквизита компонента только как объект, у которого есть 2 свойства, оба с именем any
, которые не будут работать.
Вместо этого тип вашего компонента должен быть таким:
class Github extends React.Component<any, any>
Также выведенный тип state.user
является массивом, поскольку начальное состояние:
state = {
user: []
}
, поэтому вы получаете ошибки о user.login
, user.public_repos
...
Вы можете напечатать состояние следующим образом:
interface IState {
user: User;
}
interface User {
login: string;
public_repos: string;
followers: string;
avatar_url: string;
}
class Github extends React.Component<any, IState> {
public state = {
user: {
login: "",
public_repos: "",
followers: "",
avatar_url: "",
},
};
public getRepoUser = async () => {
const res = await axios.get<User>("https://api.github.com/users/example");
this.setState({
user: res.data,
});
}
...
}