Почему я не могу различить это объединение только информацией о том, что член x является строкой, а не числом? Почему я должен использовать литеральный тип?
type A = { x: string ; y: string }
type B = { x: number ; y: number }
type C = A | B
function fn(p: C) {
if (typeof p.x === 'string') {
// Typescript is unable to infer p as A
// Typescript infer p.y as (string | number), why not just string ?
}
// Typescript is capable of inferring p.x as number - good
// But cannot infer p.y as number, why ?
}
Для меня невозможно вызвать функцию с таким типом, как этот {x: string, y: number}, так почему машинописный текст предполагает, что это возможно?