TypeScript: types as contracts

Take your place