Как извлечь тип из тегового типа объединения в машинописи? - PullRequest
0 голосов
/ 23 октября 2018

Допустим, тип уже определен следующим образом:

export type Item = {
  type: 'text',
  content: string
} | {
  type: 'link',
  url: string
}

Можно ли извлечь часть link из типа Item?Я имею в виду, можно ли определить тип ExtractTypeFrom:

type LinkItem = ExtractType<Item, 'type', 'link'>

И LinkItem будет:

{
  type: 'link',
  url: string
}

1 Ответ

0 голосов
/ 23 октября 2018

Да, возможно, вы очень близки, вы можете использовать предопределенный условный тип Extract.Вам может понадобиться передать в качестве второго аргумента тип, который может быть базовым типом для типа, который вы ищете:

type LinkItem = Extract<Item, { type: 'link' }> // will be  { type: "link"; url: string; }
...