Rules a good type system should follow
Over my career I've worked with some very different languages - PHP (and it's cooler cousin Hack), C, C++, Objective C, JavaScript (and it's cooler cousins TypeScript and Flow), Java, Haskell, Python, Rust, Dart, Lua,…