2016-11-28 10 views
8

को लक्षित करते समय उपलब्ध हैं, मैं async कीवर्ड का उपयोग करने में सक्षम होना चाहता हूं, लेकिन मैं चाहता हूं कि मेरी टाइपस्क्रिप्ट ईएस 5 कोड में संकलित करे ताकि मेरा कोड औसत व्यक्ति ब्राउज़र में चलाया जा सके। जब मैं विजुअल स्टूडियो कोड में async का उपयोग करने का प्रयास करता हूं तो मुझे यह त्रुटि मिलती है।Async फ़ंक्शंस केवल ECMAScript 2015 या उच्चतर

Async फ़ंक्शंस केवल ECMAScript 2015 या को लक्षित करते समय उपलब्ध होते हैं।

मैंने सोचा था कि लक्षित कर es6 मतलब यह है कि टाइपप्रति संकलन से उत्पादन जावास्क्रिप्ट es6 हो जाएगा, और es6 सबसे ब्राउज़रों पर अभी तक काम नहीं करता है?

यहाँ मेरी tsconfig.json है:

{ 
    "compilerOptions": { 
    "target": "es5", 
    "module": "system", 
    "moduleResolution": "node", 
    "lib": ["es2015", "dom"], 
    "sourceMap": true, 
    "emitDecoratorMetadata": true, 
    "experimentalDecorators": true, 
    "removeComments": false, 
    "noImplicitAny": true, 
    "outDir":"js/app/", 
    "typeRoots": [ 
     "./node_modules/@types" 
    ] 
    }, 
    "exclude": [ 
    "node_modules", 
    "app/test" 
    ] 
} 

मैं अगर lib क्षेत्र यह काम है क्योंकि यह "es2015" कहते हैं हो सकता है, लेकिन यह नहीं है सोच रहा था।

मैं भी सोच रहा हूँ शायद core-js शिम async उपलब्ध बनाता है, लेकिन मैं केवल इस तरह मेरी index.html में है कि शिम में शामिल हैं:

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

तो मुझे नहीं लगता कि यह संकलन समय पर async उपलब्ध बना रहा है है । कोर-जेएस आयात करने का कोई बेहतर तरीका है?

मैं async उपयोग करने योग्य कैसे बना सकता हूं लेकिन मेरे कोड को अधिकांश ब्राउज़रों पर चलाने में असमर्थ भी नहीं है?

+4

इस में काम करना चाहिए [टाइपप्रति 2.1] (https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#user-content-downlevel-async-functions), वास्तविक जल्द ही आ रहा अब ... – artem

+0

'कोर-जेएस' पॉलीफिल है। 'es6' लक्ष्य के साथ' async' जेनरेटर पर निर्भर करता है। वे polyfilled नहीं किया जा सकता है। आम तौर पर बेस को ईएस 5 में ट्रांसफर करने के लिए टीएस के संयोजन के साथ प्रयोग किया जाना चाहिए। जैसा कि कहा गया है, 'es5' लक्ष्य के लिए' async' 2.1 dev संस्करण में उपलब्ध है। – estus

उत्तर

8

ECMAScript6 अधिकांश प्रमुख ब्राउज़रों में समर्थित है।

रूप @loganfsmyth द्वारा इस जवाब पर टिप्पणी में कहा गया है,

बस ध्यान रखें कि "सबसे प्रमुख ब्राउज़रों" अभी भी केवल अपने उपयोगकर्ता आधार का एक छोटे प्रतिशत को कवर कर सकता।

Firefox

Chrome

From Safari's website,

ES6 ECMAScript 2015 मानक, यह भी ES6 के रूप में जाना जाता है, पूरी तरह से , समर्थित है MacOS पर सफारी को यह प्रमुख जावास्क्रिप्ट विकास लाने और आईओएस।

आप बदलना होगा करने जा रहे हैं,

"target": "es5", 

करने के लिए
"target": "es6", 

टाइपप्रति 1।ईएस 6 लक्ष्यों (नोड v4 +) में 0 async/प्रतीक्षा समर्थन टाइपस्क्रिप्ट अब उन इंजनों के लिए एसिंक्रोनस फ़ंक्शंस का समर्थन करता है जिनमें ES6 जनरेटर के लिए मूल समर्थन है, उदा। नोड v4 और ऊपर। एसिंक्रोनस फ़ंक्शन एसिंक कीवर्ड के साथ उपसर्ग किए गए हैं; का इंतजार निष्पादन को निलंबित करता है जब तक कि एक असीमित फ़ंक्शन रिटर्न वादा पूरा हो जाता है और वापस आने वाले वादे से मूल्य को अनचाहे करता है।

+4

बस ध्यान रखें कि "सबसे प्रमुख ब्राउज़र" अभी भी आपके उपयोगकर्ताबेस के एक छोटे प्रतिशत को कवर कर सकते हैं। – loganfsmyth

संबंधित मुद्दे