Ошибка при определении типа (P in)

TypeScript. Ниже пример. Ошибка подчеркнута в комментарии.

type foo = {
  stringProp: string
}

type bar = {
  [p in ('a' | 'b')]: number
}

// Надо привести к такому
type union = {
  stringProp: string
  a: number
  b: number
}

// Работает
type union1 = foo & bar

// Работает
type union2 = foo & {
  [p in ('a' | 'b')]: number
}

// Работает
type union3 = bar & {
  stringProp: string
}

// !!! Не работает
type fooBar = {
  stringProp: string
  [p in ('a' | 'b')]: number
  //^^^^^^^^^^^^^^^^ ------------------- Error
}

// В то же время - это работает
type fooBarSuccess = {
  stringProp: string
  [i: number]: number
}

Не вижу разницы каким образом объединить тип. Но почему там ошибка?
Ссылка на Playground

Update:

Нашел эту ошибку в документации mapped-types (чуть ниже проскроллить надо).
Ссылка на их же пример This is an error.
Но человекоПонятного объяснения там нет.


Ответы (0 шт):