BenderIsGreat34
@BenderIsGreat34
junior front-end

Почему TS не может определить интерфейс и типизировать переменные?

Ошибка : TS2696: The 'Object' type is assignable to very few other types. Did you mean to use the 'any' type instead?   Type 'Object' is missing the following properties from type 'Movie': id, overview, poster_path, release_date, title

сам ошибка в цикле и отмечена комментарием
interface Resp {
    results: Object[],
    page: number
}

interface Movie {
    adult?: boolean;
    backdrop_path?: string,
    genre_ids?: Number[],
    id: number,
    original_language?: "en",
    overview: string,
    popularity?: number,
    poster_path: string,
    release_date: string,
    title: string,
    video?: boolean,
    vote_average?: number
}

export async function getDataMovies(api: string) {
    const resp = await fetch(api);
    const data: Resp = await resp.json();

    const {page, results} = data;
    const listLength: number = results.length;
    const movies: Object[] = [];

    for await (const movie of results) {
        const {title, overview, id}: Movie = movie; // bug is here
        const releaseDate: Resp = movie.release_date;
        const posterPath: Resp = movie.poster_path;
        movies.push({
            title, overview, releaseDate, posterPath, id
        });
    }
}
  • Вопрос задан
  • 342 просмотра
Решения вопроса 1
Ну так и что вам не понятно? У вас Object испольуется там, гле ожидается Movie. Либо сделайте Resp.results типа Movie[], либо не приводите результат fetch к типу Resp
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы