typescript TypeError:无法读取undefined的属性(阅读“bigPoster”),如何纠正?

lnvxswe2  于 2023-05-19  发布在  TypeScript
关注(0)|答案(1)|浏览(207)

TypeError:无法读取未定义的属性(阅读“bigPoster”)

async getCollections(): Promise<ICollection[]> {
        const genres = await this.getAll()
        const collections = await Promise.all(
            genres.map(async (genre) => {
                const moviesByGenre = await this.movieService.byGenres([genre._id])
                const result: ICollection = {
                    _id: String(genre._id),
                    title: genre.name,
                    slug: genre.slug,
                    image: moviesByGenre[0].bigPoster,
                }
                return result
            })
        )
        return collections
    }
3phpmpom

3phpmpom1#

您可以使用Optional Chaining功能,该功能出现在ES2020版本的JavaScript中。
出现此错误是因为在您的代码中,moviesByGenre数组可能有时为空。如果是这样的话,你没有任何海报在里面。因此,您无法在undefined值中获得bigPoster键。
如果数组为空,符号?.将返回undefined而不是错误。

async getCollections(): Promise<ICollection[]> {
        const genres = await this.getAll()
        const collections = await Promise.all(
            genres.map(async (genre) => {
                const moviesByGenre = await this.movieService.byGenres([genre._id])
                const result: ICollection = {
                    _id: String(genre._id),
                    title: genre.name,
                    slug: genre.slug,
                    image: moviesByGenre[0]?.bigPoster,
                }
                return result
            })
        )
        return collections
    }

相关问题