何
- tscのときのtarget指定の意味を整理する。
targetとは
- ES3,ES5,ES6 から指定する。指定した仕様に従ったjsが生成される。
- 参考)https://www.typescriptlang.org/docs/handbook/compiler-options.html
- jsの実行環境の要件に合わせて指定する。
TypeScriptの記述について
- 上位の仕様で記述して、下位の仕様をtarget指定した際に、その仕様に変換してくれる場合と、エラーになる場合がある。
- 例)tsで、ES6の記述をして、target=es3やtarget=es5でコンパイルした際に、その仕様に変換してくれる場合と、エラーになる場合がある。
変換してくれる例)
es6.ts
const NUM = 1;
var str = `あ
い
う`;
var [name2, age] = ['a', 3];
↓ tsc --target es3 es6.ts
es3.js
var NUM = 1;
var str = "\u3042\n\u3044\n\u3046";
var _a = ['a', 3], name2 = _a[0], age = _a[1];
↓ tsc --target es6 es6.ts
es6.js
//こっちはtsの記述から変化なし
const NUM = 1;
var str = `あ
い
う`;
var [name2, age] = ['a', 3];
エラーになる例)
es6-2.ts
//generator
function* gfn(n){
n++;
yield n;
n++;
yield n;
}
//map
let map = new Map();
map.set('key1', 'value1');
↓ tsc --target es3
error TS1220: Generators are only available when targeting ECMAScript 2015 or higher.
error TS2304: Cannot find name 'Map'.
- RoadMapによって、今後のサポートの予定が公開されている https://github.com/Microsoft/TypeScript/wiki/Roadmap
- "Generator support for ES3/ES5"がFeb 2017に予定されている、など。