将类型分配给作为 Maybe 类型的嵌套类型的属性
Posted
技术标签:
【中文标题】将类型分配给作为 Maybe 类型的嵌套类型的属性【英文标题】:Assigning a type to a property that is a nested type of a Maybe type 【发布时间】:2020-05-23 18:29:18 【问题描述】:我正在尝试将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
工具,因此我无法控制这些类型。
【问题讨论】:
【参考方案1】:我刚刚在文档中找到了答案。我需要使用NonNullable
类型。
myProperty: NonNullable<SomeType['someKey']>['someNestedKey'] = []
参考:https://www.typescriptlang.org/docs/handbook/utility-types.html#nonnullablet
【讨论】:
以上是关于将类型分配给作为 Maybe 类型的嵌套类型的属性的主要内容,如果未能解决你的问题,请参考以下文章
如何在plsql中将对象类型属性的值分配给具有相同属性属性的不同对象类型?
参数类型“MaterialColor”不能分配给参数类型“Paint”
无法将 NSMutableArray 类型的值分配给 UIBarButtonItem 类型
访问从 GraphQL 生成的多个嵌套 TypeScript 类型
与 Typescript 反应:“never[]”类型的参数不可分配给“StateProperties |”类型的参数(() => 状态属性)'