1) Type Annotations. These are just simple extensions to function definition syntax. So you can make a function like `function helloWorld(msg: string) {}`, and get static type-checking.
2) Classes. They add a simple ES6-compatible `class` definition syntax. (along with `interface`).
Since it's a superset of JavaScript, rather than a whole redesign of the language, any valid JavaScript file is valid TypeScript. But, similarly to CoffeeScript, TypeScript is compiled to JavaScript before execution (rather than being an IE-only runtime or something).
This is a pretty earnest, carefully restrained effort to patch two of the most significant pain-points in JavaScript. Personally, I find this more appealing in theory than CoffeeScript, although in practice it'll have to catch on first. Props to Microsoft for trying something good :)