V
o: {
f: ()->()
f: ()->()&u32->()
f<T>: ()->T
}
и мы вызываем
let unit: () = o.f(), то будет вызвана первая функция, тк она имеет самый узкий тип (хотя вторая и третья тоже подходят по сигнатуре), попутно тебе компилятор засрёт всё ворингами, тк вторая функция никогда не будет вызвана с параметром по-умолчанию