如何修复我的打字稿类型以使其正常工作?

问题描述 投票:0回答:1

如何修复我遇到的 Typescript 类型错误?

Property 'original_title' does not exist on type 'Media'.
Property 'original_name' does not exist on type 'Media'.

我正在从 API 获取数据并为其编写自己的类型。该 API 为电影和电视节目提供了 2 种不同的结构。电视节目有

name original_name origin country first_air_date
,电影有
original_title release_date title video
,但两者都有一些其他相同的属性,所以我写了这个类型,但在使用它时遇到错误。

我有一个打字稿类型,如下所示:

export type Media = {
    adult: boolean;
    backdrop_path?: string;
    genre_ids: number[];
    id: number;
    original_language: string;
    overview: string;
    popularity: number;
    poster_path?: string;
    vote_average: number;
    vote_count: number;
} & (
    | {
            original_title: string;
            release_date: string;
            title: string;
            video: boolean;
      }
    | {
            first_air_date: string;
            name: string;
            origin_country: string[];
            original_name: string;
      }
);

但是当尝试像这样使用它时:

...
<View>
    {moviesData.results.map((result: Media) => (
        <Text key={result.id}>{result.original_title}</Text>
    ))}
</View>
<View>
    {showsData.results.map((result: Media) => (
        <Text key={result.id}>{result.original_name}</Text>
    ))}
</View>
...
reactjs typescript types native
1个回答
0
投票

对于电影节目和电视节目特有的属性,你必须这样做

<View>
    {showsData.results.map((result: Media) => (
        <Text key={result.id}>{('original_title' in result) && result.original_title}</Text>
    ))}
</View>
© www.soinside.com 2019 - 2024. All rights reserved.