我正在尝试将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
)。
在打字稿中,您可以使用!
方法声明您确实知道与undefined
和/或null
联合的类型的属性值确实存在于此案件。分配类型时,有没有办法做类似的事情?
因为我正在使用graphql-codegen
工具,所以我无法控制这些类型。
我刚刚在文档中找到了答案。我需要使用NonNullable
类型。
myProperty: NonNullable<SomeType['someKey']>['someNestedKey'] = []
参考:https://www.typescriptlang.org/docs/handbook/utility-types.html#nonnullablet