Назначение типа свойству, которое является вложенным типом типа 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

Другие вопросы по тегам