Nechci spekulovat, ale jednoduchá úvaha, že když netypový systém otypuju, tj. omezím jej, dosáhnu tak větší znovupoužitelnosti, neboli obecnosti, mi nedává smysl.
Pokud otypuju netypový jazyk (třeba ve stylu TypeScript), tak ne. Zajímavé to začne být, jakmile je schopen překladač na základě těch typů něco rozhodovat. Zářným případem je právě polymorfismus na základě návratové hodnoty. To prostě nejde s "vtable"-like jazyky rozumně udělat, přitom pokud má překladač k dispozici informace o typech, tak je pro něj celkem jednoduché vybrat tu "správnou" funkci (nebo i konstantu).
Ona teda i ta typová kontrola vede k vyšší jednoduchosti kódu, protože prostě nemusím spoustu věcí kontrolovat - a vím, že je nemusím kontrolovat a nic se nestane (překladač to garantuje). Ono stačí se podívat na to jak fungují Promisy v JS a zkusit si představit, že by podobný protokol měl být naprosto běžný pro spoustu jiných situací.