javascript promise - Comment utiliser Typescript avec des promesses ES6 natives




4 Answers

La bibliothèque lib.d.ts actuelle ne contient pas de promesses. Vous avez donc besoin d'un fichier de définition supplémentaire. C'est la raison pour laquelle vous obtenez des erreurs de compilation.

Vous pouvez par exemple utiliser (comme @elclanrs dit) utiliser le paquet es6-promise avec le fichier de définition de DefinitelyTyped: es6-promise definition

Vous pouvez ensuite l'utiliser comme ceci:

var p = new Promise<string>((resolve, reject) => { 
    resolve('a string'); 
});

edit Vous pouvez l'utiliser sans définition lorsque vous ciblez ES6 (avec le compilateur TypeScript) - Notez que vous avez toujours besoin de la Promesse pour exister dans le runtime ofcourse (donc cela ne fonctionnera pas dans les anciens navigateurs :)) Ajoutez / Modifiez le suivant à votre tsconfig.json :

"compilerOptions": {
    "target": "ES6"
}

edit 2 Quand TypeScript 2.0 sortira, les choses changeront un peu (bien que dessus fonctionne encore) mais les fichiers de définition peuvent être installés directement avec npm comme ci-dessous:

npm install --save @types/es6-promise - source

edit3 Mise à jour de la réponse avec plus d'informations pour l'utilisation des types.

Créez un fichier package.json avec seulement { } comme contenu (si vous n'avez pas encore de package.json, appelez npm install --save @types/es6-promise et tsc --init . changez votre package.json pour inclure la es6-promise en tant que dépendance tsc --init créera un fichier tsconfig.json pour vous.

Vous pouvez maintenant utiliser la promesse dans votre fichier de typescript var x: Promise<any>; . Exécuter tsc -p . pour compiler votre projet. Vous devriez avoir aucune erreur.

then example

Je suis un débutant complet à Typescript et je me demande s'il est possible d'utiliser les promesses ES6 dans Typescript et ce que je devrais faire pour les faire fonctionner. Je cours le noeud 0.11.14 et je reçois une erreur pendant la compilation "Impossible de trouver le nom 'Promise'"




À partir de TypeScript 2.0, vous pouvez inclure des typings pour les promesses natives en incluant les éléments suivants dans votre tsconfig.json

"compilerOptions": {
    "lib": ["es5", "es2015.promise"]
}

Cela inclura les déclarations de promesse fournies avec TypeScript sans avoir à définir la cible sur ES6.




C'est la façon la plus récente de le faire, la réponse ci-dessus est obsolète:

typings install --global es6-promise




A. Si vous utilisez "target": "es5" et la version de TypeScript ci-dessous 2.0:

typings install es6-promise --save --global --source dt

B. Si vous utilisez "target": "es5" et TypeScript version 2.0 ou higer:

"compilerOptions": {
    "lib": ["es5", "es2015.promise"]
}

C. Si vous utilisez "target": "es6" , vous n'avez rien à faire.




Related

javascript typescript es6-promise