Похоже, следующий код не выполняет проверку типов в TypeScript.
interface A {
type: 'a',
number: Number
}
interface B {
type: 'b',
number: Number
}
type Letter = A | B
interface One {
type: 'one'
}
interface Two {
type: 'two'
}
type Number = One | Two;
function we(letter: Letter): boolean { // claims boolean isn't always returned
switch (letter.type) {
case 'a':
return true;
case 'b':
const number = letter.number;
switch (number.type) {
case 'one':
return true;
case 'two':
return true;
}
}
}
Я могу добавить значение по умолчанию для внутреннего переключателя, чтобы заставить его работать, но я удивлен, что мне нужно, учитывая, что плоский переключатель работает просто отлично. Что именно здесь происходит?