जवाबों:
वर्तमान lib.d.ts में यह वादा नहीं किया गया है ताकि आपको इसके लिए एक अतिरिक्त परिभाषा फ़ाइल की आवश्यकता हो, यही कारण है कि आपको संकलन त्रुटियाँ मिल रही हैं।
आप उदाहरण के उपयोग के लिए जा सकते थे (@elclanrs की तरह कहते हैं) DefinitelyTyped से परिभाषा फ़ाइल के साथ ES6 वादा पैकेज का उपयोग करें: ES6 वादा परिभाषा
आप इसे इस तरह उपयोग कर सकते हैं:
var p = new Promise<string>((resolve, reject) => {
resolve('a string');
});
संपादित करें जब आप ES6 (टाइपस्क्रिप्ट कंपाइलर के साथ) को लक्षित करते हुए परिभाषा के बिना इसका उपयोग कर सकते हैं - ध्यान दें कि आपको अभी भी रनटाइम में मौजूद होने के लिए वादे की आवश्यकता है (इसलिए यह पुराने ब्राउज़रों में काम नहीं करेगा :)) अपने निम्नलिखित में जोड़ें / संपादित करें tsconfig.json:
"compilerOptions": {
"target": "ES6"
}
2 संपादित करें जब टाइपस्क्रिप्ट 2.0 बाहर आ जाएगी तो चीजें थोड़ी बदल जाएंगी (हालांकि अभी भी ऊपर काम करता है) लेकिन परिभाषा फ़ाइलों को सीधे एनआईओएस के साथ स्थापित किया जा सकता है:
npm install --save @types/es6-promise- स्रोत
edit3 अद्यतन प्रकार के उपयोग के लिए अधिक जानकारी के साथ उत्तर देना।
package.jsonकेवल { }सामग्री के रूप में एक फ़ाइल बनाएं (यदि आपके पास एक पैकेज नहीं है। पहले से ही कॉल करें। कॉल करें npm install --save @types/es6-promiseऔर tsc --initपहले package.jsonnpm इंस्टॉलेशन कमांड आपके एस्क्यू -6 को एक निर्भरता के रूप में शामिल करने के लिए वादा करेगा। tsc --init एक tsconfig.jsonफाइल बनाएगा। तुम्हारे लिए।
अब आप अपनी टाइपस्क्रिप्ट फ़ाइल में वादे का उपयोग कर सकते हैं var x: Promise<any>;। tsc -p .अपने प्रोजेक्ट को संकलित करने के लिए निष्पादित करें। आपको कोई त्रुटि नहीं होनी चाहिए।
--save-devका उपयोग इसके बजाय किया जाना चाहिए --save, क्योंकि पुस्तकालय केवल संकलन समय पर उपयोग किया जाता है।
का प्रयोग करें targetऔर libसंकलक विकल्पों के लिए सीधे संकलित करने के लिए es5इंस्टॉल किए बिना es6-shim। (टाइपस्क्रिप्ट के साथ परीक्षण किया गया 2.1.4)। परिवाद अनुभाग में, es2016या तो का उपयोग करें es2015.promise।
// tsconfig.json
{
"compilerOptions": {
"target": "es5",
"lib": [
"es2015.promise",
"dom"
]
},
"include": [
"src/**/*.ts"
],
"exclude": [
"node_modules"
]
}
प्रकार संगठनes6-shim से स्थापित करने के लिए NPM का उपयोग करें ।
npm install @types/es6-shim --save-dev
टाइपस्क्रिप्ट 2.0 से पहले, विश्व स्तर पर निश्चित रूप से स्थापित करने के लिए टाइपिंग का उपयोग करें ।es6-shim
npm install typings --global --save-dev
typings install dt~es6-shim --global --save-dev
typingsविकल्प का उपयोग करता npmस्थापित करने के लिए typingsविश्व स्तर पर और उसके बाद का उपयोग करता typingsशिम स्थापित करने के लिए। dt~उपसर्ग DefinitelyTyped से शिम डाउनलोड करने के लिए इसका मतलब है। --globalविकल्प का मतलब है कि शिम के प्रकार परियोजना भर में उपलब्ध हो जाएगा।
https://github.com/Microsoft/TypeScript/issues/7788 - 'प्रॉमिस' नाम नहीं ढूँढ सकते हैं और 'आवश्यकता' नाम नहीं ढूँढ सकते
es2016जब तक आपका लक्ष्य ES2016 का समर्थन नहीं करता है तब तक शामिल करना एक अच्छा विचार नहीं है। बहुत सारे ब्राउज़र हैं जो वादों का समर्थन करते हैं लेकिन ES2016 में सब कुछ नहीं। es2015.promiseES2016 में सब कुछ के लिए प्रकारों में खींचने के बिना सिर्फ वादों के प्रकारों को शामिल करने के लिए उपयोग करें ।
टाइपस्क्रिप्ट 2.0 के रूप में आप अपने में निम्नलिखित को शामिल करके मूल वादों के लिए टाइपिंग शामिल कर सकते हैं tsconfig.json
"compilerOptions": {
"lib": ["es5", "es2015.promise"]
}
इसमें ईएस 6 को लक्ष्य निर्धारित किए बिना टाइपस्क्रिप्ट के साथ आने वाले वादे की घोषणाएं शामिल होंगी।
यदि आप नोड .js 0.12 या इसके बाद के संस्करण / टाइपस्क्रिप्ट 1.4 या इसके बाद के संस्करण का उपयोग करते हैं, तो बस संकलक विकल्प जोड़ें जैसे:
tsc a.ts --target es6 --module commonjs
अधिक जानकारी: https://github.com/Microsoft/TypeScript/wiki/Compiler-Options
यदि आप उपयोग करते हैं tsconfig.json, तो इस तरह:
{
"compilerOptions": {
"module": "commonjs",
"target": "es6"
}
}
अधिक जानकारी: https://github.com/Microsoft/TypeScript/wiki/tsconfig.json
ऐसा करने का यह सबसे हालिया तरीका है, उपरोक्त उत्तर पुराना है:
typings install --global es6-promise
ES6 प्रॉमिस के मूल रूप में कोई npm इंस्टाल आवश्यक नहीं है।
Node.js परियोजना -> गुण -> टाइपस्क्रिप्ट बनाएँ टैब ECMAScript संस्करण = ECMAScript6
import http = require('http');
import fs = require('fs');
function findFolderAsync(directory : string): Promise<string> {
let p = new Promise<string>(function (resolve, reject) {
fs.stat(directory, function (err, stats) {
//Check if error defined and the error code is "not exists"
if (err && err.code === "ENOENT") {
reject("Directory does not exist");
}
else {
resolve("Directory exists");
}
});
});
return p;
}
findFolderAsync("myFolder").then(
function (msg : string) {
console.log("Promise resolved as " + msg);
},
function (msg : string) {
console.log("Promise rejected as " + msg);
}
);
यदि "target": "es5"2.0 का उपयोग कर और टाइपस्क्रिप्ट संस्करण 2.0 से नीचे है:
typings install es6-promise --save --global --source dt
B. यदि उपयोग कर रहे हैं "target": "es5"और टाइपस्क्रिप्ट संस्करण 2.0 या हाइगर:
"compilerOptions": {
"lib": ["es5", "es2015.promise"]
}
C. यदि उपयोग कर रहे हैं "target": "es6", तो कुछ भी करने की आवश्यकता नहीं है।
"target": "es6"टाइपस्क्रिप्ट 2.1.1 के साथ उपयोग कर रहा हूं और अभी भी कर रहा हूं Cannot find name 'Promise'।
es6-promise