function messUpTheArray(arr: Array<string | number>): void {
arr.push(3);
}
const strings: Array<string> = ['foo', 'bar'];
messUpTheArray(strings);
const s: string = strings[2];
console.log(s.toLowerCase())
You obviously can't push a number into an Array<String>, yet typescript allows it.For my money, ReasonML is a better solution for type issues (hindley-milner types are awesome).