Ох уж эти частные и общие случаи...то что по факту тип AB - сужение типа А, забавно. Визуально он выглядит шире ))
теперь хотя бы есть серьёзный аргумент в пользу стрелок, если кто спросит.)ага, тоже теперь только форму "f: (p: A) => void" буду юзать. Причем этот момент в доке прописан, см. второй ответ, Стас нашел.
interface Int1 {
f(p: string | number): void
}
class Class1 implements Int1 {
f(p: number): void { console.log(p) }
}
var o: Int1 = new Class1();
o.f('qqq')
А если тип не указывать, то мой прямо сейчас редактируемый код не показывает ошибку, зато повсеместно зажигаются огоньки, и куча ошибок в watch, которые суть одна и та же ошибка, причем могут автоматом меняться типы других функций, и это приведет к дополнительным еррорам второго и т.д. порядка. А если я ещё параллельно редактирую другие функции, которые могут использоваться в моей и как-то определять возвращаемый тип, то там вообще может быть веселье.
В бытность плюсовиком, наблюдал ошибки компиляции, которые уехали от исходной точки на много файлов и строк. Так что локальность ошибок могу оценить по достоинству )