Назначение типа свойству, которое является вложенным типом типа Maybe
Я пытаюсь присвоить свойству тип, созданный graphql-codegen
орудие труда. Тип, который я пытаюсь назначить, - это вложенный тип. Учитывая следующий тип:
type SomeType = {
someKey: Maybe<
{ __typename?: "OtherType" | undefined } &
{ someNestedKey: ({ __typename?: "AnotherType" | undefined } & Pick<AnotherType, "prop1" | "prop2">)[] }
>
}
Мне нужно уметь:
myProperty: SomeType['someKey']['someNestedKey'] = []
Однако проблема, с которой я сталкиваюсь, заключается в том, что тип someKey
это Maybe
type, поэтому Typescript жалуется, что нет someNestedKey
собственность на <Maybe { __typename?: "OtherType" | ...} & { someNestedKey: (...)[] }>
тип (т.е. тип someKey
).
В Typescript вы можете использовать !
чтобы указать, что вы точно знаете, что значение свойства типа, объединенного с undefined
и / или null
действительно существует в этом случае. Есть ли способ сделать что-то подобное при назначении типа?
Поскольку я использую graphql-codegen
инструмент, я не могу контролировать эти типы.
1 ответ
Я только что нашел ответ в документации. Мне нужно использоватьNonNullable
тип.
myProperty: NonNullable<SomeType['someKey']>['someNestedKey'] = []
Ссылка: https://www.typescriptlang.org/docs/handbook/utility-types.html