> Other more quaint languages like Java may have type systems that check properties such as "The program does not add numbers and strings"
Poor example. In Java, number + string means "convert the number to a decimal string then concatenate", and it can be invoked unintentionally.