首页 > 解决方案 > 如何选择可能具有可以为空的父母的嵌套类型

问题描述

我正在使用graphql-code-gen自动生成我的 GraphQL 类型并得到如下内容:

type Maybe<T> = T | null;

type Project = {
  id: string
}

type Milestone = {
  id: string
  title: string
  startDate: number
  endDate: number
}

type Foobar = (
  { __typename?: 'Query' }
  & { project: Maybe<(
    { __typename?: 'Project' }
    & Pick<Project, 'id'>
    & { milestones: (
      { __typename?: 'MilestoneConnection' }
      & { edges: Array<(
        { __typename?: 'MilestoneEdge' }
        & { node: (
          { __typename?: 'Milestone' }
          & Pick<Milestone, 'id' | 'title' | 'startDate' | 'endDate'>
        ) }
      )> }
    ) }
  )> }
);

const foo: Foobar['project']['milestones']

我无法访问milestones,因为project可能为空。有没有可能得到所有定义的东西milestone

打字稿游乐场

标签: typescript

解决方案


您只需null要从以下类型中排除project

let foo: NonNullable<Foobar['project']>['milestones']

游乐场链接


推荐阅读