TypeScript

Formally, the type system in TypeScript is unsound:

function add(x: number, y: number) { return x + y; }
let arr = [1, 2, 3];
add(arr[3], arr[4]);
// typechecks, but fails at a runtime
// can be improved with `noUncheckedIndexedAccess` option

Learning

Tools

Compiler

Blogs