2016-02-26 5 views
16

Angular2 Quickstart Guide हम निर्देश दिया जाता है के बाद की जरूरत है 2 स्थानों में es6-shim शामिल करने के लिए है:Angular2 कारण है कि हम 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 सुविधाओं का अनुकरण करता है।

let test1 =() => 123 + 456; 
let test2 = new Promise((resolve, reject) => {}); 
: उन सुविधाओं में से कुछ Promise, Array.from() ...

अपने कोड ES5 में अनुवाद किया है, आप es6-shim शामिल करने की जरूरत है ताकि आप इसे में उन नई सुविधाओं का उपयोग कर सकते हैं ... इस ES6 कोड पर विचार करें हैं

यह ES5 कोड के लिए अनुवाद किया जाएगा:

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

लेकिन बिना es6-shimवादा अपरिभाषित किया जाएगा ...

+0

आपका मतलब है संपादक द्वारा दिए गए 'संकेत/इंटेलिजेंस' es6-shim का उपयोग कर रहा है? –

+1

@ पर्दीपजेन टाइपिंग 'es6-shim.d.ts' से टाइपिंग ... – Sasxa

+1

और अक्टूबर 2016 तक, अब वे ओपी द्वारा संदर्भित अपनी त्वरित शुरुआत में एएस 6-शिम पर कोर-जेएस की सिफारिश कर रहे हैं। – HDave

13

टाइपस्क्रिप्ट अंतर्निहित पॉलीफिल के साथ नहीं आता है। जहां es-shim तरह polyfills में आते हैं वहाँ कुछ सुविधाओं को यह transpile नहीं करता है, यह है।

टाइपप्रति परिभाषा फ़ाइल अपनी चुनी संपादक के भीतर सहायता टाइपिंग प्रदान करेगा और es-shim कार्यक्षमता टाइपप्रति नहीं करता है कि के लिए कार्यान्वयन प्रदान करेगा ईएस 5 कोड के लिए पारदर्शी नहीं है।

ऐसी सुविधाओं टाइपप्रति के कुछ transpile हैं नहीं करता है:

  • वादे
  • कार्य प्रोटोटाइप वस्तुओं (Array.from(), Array.of(), Number.isInteger(), आदि)
  • मॉड्यूल लोडिंग के लटके

सामान्य दृष्टिकोण है:

अंगूठे का नियम यह है कि यदि कोई कैनोलिक/सायन उत्सर्जक होता है जिसमें विशाल पेफ-हिट नहीं होता है, तो हम इसका समर्थन करने की कोशिश करेंगे। हम किसी भी रनटाइम विधियों या डेटा संरचनाओं को नहीं जोड़ते हैं, जो कोर.जेएस (या कोई भी pollyfil) करता है।- source (TypeScript developer)