typescript - Tilldela en typ till en egenskap som är en nästlad typ av en Maybe-typ
Jag försöker tilldela en egenskap en typ som genererats av graphql-codegen-verktyget. Typen jag försöker tilldela är en nästlad typ. Givet följande typ:
type SomeType = {
someKey: Maybe<
{ __typename?: "OtherType" | undefined } &
{ someNestedKey: ({ __typename?: "AnotherType" | undefined } & Pick<AnotherType, "prop1" | "prop2">)[] }
>
}
Jag behöver kunna göra:
myProperty: SomeType['someKey']['someNestedKey'] = []
Problemet jag stöter på är dock att typen av someKey är en Maybe-typ, så Typescript klagar på att det inte finns någon someNestedKey-egenskap på <Maybe { __typename?: "OtherType" | ...} & { someNestedKey: (...)[] }>-typen (dvs. typen av someKey).
I Typescript kan du använda !-metoden för att ange att du är säker på att egenskapsvärdet för en typ som är unionerad med undefined och/eller null faktiskt existerar i det här fallet. Finns det ett sätt att göra något liknande när man tilldelar en typ?
Eftersom jag använder verktyget graphql-codegen har jag inte kontroll över dessa typer.
Svar #1
Jag hittade precis svaret i dokumentationen. Jag behöver använda NonNullable-typen.
myProperty: NonNullable<SomeType['someKey']>['someNestedKey'] = []
Referens: https://www.typescriptlang.org/docs/handbook/utility-types.html#nonnullablet
