Ошибка при определении типа (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.
Но человекоПонятного объяснения там нет.