将类型分配给 属性,它是 Maybe 类型的嵌套类型

Assigning a type to a property that is a nested type of a Maybe type

我正在尝试将由 graphql-codegen 工具生成的类型分配给 属性。我要分配的类型是嵌套类型。给定以下类型:

type SomeType = {
  someKey: Maybe<
    { __typename?: "OtherType" | undefined } & 
    { someNestedKey: ({ __typename?: "AnotherType" | undefined } & Pick<AnotherType, "prop1" | "prop2">)[] } 
  >
}

我需要能够做到:

myProperty: SomeType['someKey']['someNestedKey'] = []

但是,我 运行 遇到的问题是 someKey 的类型是 Maybe 类型,所以 Typescript 抱怨没有 someNestedKey 属性 在 <Maybe { __typename?: "OtherType" | ...} & { someNestedKey: (...)[] }> 类型上(即 someKey 的类型)。

在 Typescript 中,您可以使用 ! 方法来声明您确定知道与 undefined [=33 合并的类型的 属性 值=] null 实际上,在这种情况下确实存在。有没有办法在分配类型时做类似的事情?

由于我使用的是 graphql-codegen 工具,因此我无法控制这些类型。

我刚刚在文档中找到了答案。我需要使用 NonNullable 类型。

myProperty: NonNullable<SomeType['someKey']>['someNestedKey'] = []

参考:https://www.typescriptlang.org/docs/handbook/utility-types.html#nonnullablet