【问题标题】:Assigning a type to a property that is a nested type of a Maybe type将类型分配给作为 Maybe 类型的嵌套类型的属性
【发布时间】:2023-04-01 22:22:01
【问题描述】:

我正在尝试将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 类型上没有 someNestedKey 属性(即类型someKey)。

在 Typescript 中,您可以使用 ! 方法声明您确定与 undefined 和/或 null 联合的类型的属性值确实存在于这个案例。分配类型时有没有办法做类似的事情?

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

【问题讨论】:

    标签: typescript graphql typescript2.0 graphql-codegen


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-28
      • 1970-01-01
      • 2021-07-07
      • 1970-01-01
      • 1970-01-01
      • 2021-06-22
      相关资源
      最近更新 更多