TypeScript is script code that translates to JavaScript - either in ES5 or ES6 (and ES3 too).
TypeScript 1.5 adds a number of new ES6 features, including modules, destructuring, distribution, for ... characters, computed properties, let / const, and tagged string patterns.
This means that you can use modules for ... and other functions in TypeScript code and the TypeScript compiler, your code is translated into ESx-compatible code that does the same. Take for..of , for example:
TypeScript code:
for (let t of [1,2,3]) { console.log(t) }
transferred to ES5 as follows:
for (var _i = 0, _a = [1, 2, 3]; _i < _a.length; _i++) { var t = _a[_i]; console.log(t); }
However, if you are targeting ES6, then transpiling is simple:
for (let t of [1,2,3]) { console.log(t); }
The same is true for modules, distribution, etc. In each case, TypeScript generates code that behaves the same in ES5, ES6, and ES6 (simplified because this is not always possible).
There is no difference in the expressiveness of TypeScript and ES6. The difference is that the TypeScript compiler helps you with static analysis of your code. Otherwise, no matter what you program in ES6, you can program TypeScript and vice versa.