Присвоение типа свойству, являющемуся вложенным типом типа Maybe - PullRequest
1 голос
/ 07 февраля 2020

Я пытаюсь присвоить свойству тип, сгенерированный инструментом 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 жалуется на то, что у типа <Maybe { __typename?: "OtherType" | ...} & { someNestedKey: (...)[] }> (то есть типа someKey) нет свойства someNestedKey.

В Typescript вы можете использовать метод !, чтобы указать, что вы точно знаете, что значение свойства типа, объединенного с undefined и / или null, действительно , существуют в этом случае. Есть ли способ сделать что-то подобное при назначении типа?

Поскольку я использую инструмент graphql-codegen, я не могу контролировать эти типы.

1 Ответ

2 голосов
/ 07 февраля 2020

Я только что нашел ответ в документации. Мне нужно использовать тип NonNullable.

myProperty: NonNullable<SomeType['someKey']>['someNestedKey'] = []

Ссылка: https://www.typescriptlang.org/docs/handbook/utility-types.html#nonnullablet

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...