0

我正在使用graphql- codegen 为我的 React 项目生成 Typescript 类型。使用 graphql,您可以设置查询以仅返回您需要的属性。这很有用,但也会导致我的 Typescript 定义文件看起来非常复杂的对象类型。我有一个Query返回几个嵌套项目。我想知道是否可以仅提取tags属性的类型?

我将如何使用 Typescript 提取以下类型:

tags?: Maybe<Array<Maybe<(
        { __typename?: 'Tag' }
        & Pick<Tag, 'id' | 'name'>
      )>>>

从这个基础对象类型(我已经指出了我想提取的类型的一部分):

type ManageTeamPageQuery = (
    { __typename?: 'Query' }
    & { authedTeam?: Maybe<(
      { __typename?: 'Team' }
      & Pick<Team, 'id' | 'name' | 'imageEnding' | 'facebookPixelId' | 'subscriptionId'>
      & { domains?: Maybe<Array<Maybe<(
        { __typename?: 'Domain' }
        & Pick<Domain, 'id' | 'name'>
      )>>>, tags?: Maybe<Array<Maybe<( <--------- HERE
        { __typename?: 'Tag' } <----------------- HERE
        & Pick<Tag, 'id' | 'name'> <------------- HERE
      )>>> }
    )> }
);

对我来说棘手的是嵌套属性可以为空或未定义,所以我不确定如何深入访问它们?

请注意,graphql-codegen 定义Maybe为:

export type Maybe<T> = T | null;

作为参考,ManageTeamPageQuery从 graphql 的结果生成的类型如下所示:

query ManageTeamPage($id: Int!) {
    authedTeam(id: $id) {
        id
        name
        imageEnding
        facebookPixelId
        subscriptionId
        domains {
            id
            name
        }
        tags {
            id
            name
        }
    }
}
4

0 回答 0