2016-02-26 5 views
16

が必要なのか:Angular2はなぜ我々は我々が2ヶ所で<code>es6-shim</code>を含めるように指示されている<a href="https://angular.io/docs/ts/latest/quickstart.html">Angular2 Quickstart Guide</a>後ES6-シム

1)index.html

<script src="node_modules/es6-shim/es6-shim.min.js"></script>

2)typings.json

"ambientDependencies": { 
    "es6-shim": "github:DefinitelyTyped/DefinitelyTyped/es6-shim/es6-shim.d.ts#6697d6f7dadbf5773cb40ecda35a76027e0783b2" 
} 

私は、私たちがes6コードを編集しているという印象を受けましたes5にダウン。 tsconfig.json

{ 
    "compilerOptions": { 
    "target": "es5", 
    ... 

で設定

最終結果はブラウザがes5をロードしているということであれば、なぜブラウザはes6のためのシムを必要とするのでしょうか?

答えて

22

入力はコードヒント/インテリセンスを与えるためにエディタで使用され、es6-shim.min.jsはES5ブラウザ用のES6機能をエミュレートするコードです。これらの機能のいくつかは、あなたのコードがES5に翻訳されている間、あなたがそうあなたがそれで、これらの新機能を使用することができますes6-shimを含める必要がPromiseArray.from() ...

です...このES6コードを考えてみましょう:

let test1 =() => 123 + 456; 
let test2 = new Promise((resolve, reject) => {}); 

それはES5コードに変換されます。

var test1 = function() { return 123 + 456; }; 
var test2 = new Promise(function (resolve, reject) { }); 

しかしが不定になりes6-shim約束なし...

+0

エディタで与えられている「ヒント/インテリセンス」はes6-shimを使用していますか? –

+1

@PardeepJain「es6-shim.d.ts」からのタイピング... – Sasxa

+1

2016年10月現在、彼らはOPで参照されるクイックスタートでes6-shimよりもコアjを推奨しています。 – HDave

13

TypeScriptには、ポリフィルが組み込まれていません。 es-shimのようなpolyfillsは

活字体定義ファイルが選択したエディタでのサポートを入力を提供します。入って来、それはtranspileていない特定の機能がありますが、これがどこにあるかとes-shimは活字体はdoesnの機能の実装を提供しますES5コードに移行する

、このような機能の活字体のいくつかはtranspileありません。

  • 約束
  • プロトタイプオブジェクト(Array.from()Array.of()Number.isInteger()、など)のオフにぶら下がっ機能
  • モジュールのロード

一般的なアプローチは次のとおりです。

巨大なパーフォットヒットを持たない標準/正常な発光がある場合は、それをサポートしようとします。実行時メソッドやデータ構造を追加することはありません。これはcore.js (または任意のポリフィール)が果たす役割です。 - source (TypeScript developer)

関連する問題