1

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

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

我需要能够做到:

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

但是,我遇到的问题是 of 的类型someKey是一种Maybe类型,因此 Typescript 抱怨该类型没有someNestedKey属性<Maybe { __typename?: "OtherType" | ...} & { someNestedKey: (...)[] }>(即 of 的类型someKey)。

在 Typescript 中,您可以使用该!方法来声明您确定知道在这种情况下联合undefined和/或null确实存在的类型的属性值。分配类型时有没有办法做类似的事情?

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

4

1 回答 1

2

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

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

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

于 2020-02-07T15:57:51.037 回答