Acho que existem outras situações que podem ser interessantes. Por exemplo, em alguns casos você faz alguma verificação, mas o typescript não consegue entender.
(não verifiquei o exemplo abaixo, mas já passei por situações similares)
const other = (param: string) => {
// ...
return 123
}
const foo = (a: string | null) => {
const b = a
if (typeof b === "string") {
// aqui poderia usar o as para garantir que é string
return other(a)
}
return null
}
Outro caso seria o erro que vem do try catch