Je suis un débutant complet de 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. J'exécute le nœud 0.11.14 et j'obtiens une erreur lors de la compilation "Impossible de trouver le nom 'Promise'"
javascript
typescript
es6-promise
dchang
la source
la source
es6-promise
Réponses:
La lib.d.ts actuelle n'a pas de promesses définies, vous avez donc besoin d'un fichier de définition supplémentaire, c'est pourquoi vous obtenez des erreurs de compilation.
Vous pouvez par exemple utiliser (comme @elclanrs le dit) utiliser le package es6-promise avec le fichier de définition de DefinitelyTyped: définition es6-promise
Vous pouvez ensuite l'utiliser comme ceci:
modifier Vous pouvez l'utiliser sans définition lorsque vous ciblez ES6 (avec le compilateur TypeScript) - Notez que vous avez toujours besoin que la promesse existe dans le runtime bien sûr (donc cela ne fonctionnera pas dans les anciens navigateurs :)) Ajoutez / modifiez ce qui suit à votre
tsconfig.json
:edit 2 Lorsque TypeScript 2.0 sortira, les choses changeront un peu (bien que ci-dessus fonctionne toujours) mais les fichiers de définition peuvent être installés directement avec npm comme ci-dessous:
npm install --save @types/es6-promise
- sourceedit3 Mise à jour de la réponse avec plus d'informations sur l'utilisation des types.
Créez un
package.json
fichier avec uniquement{ }
comme contenu (si vous n'avez pas encore de package.json. Appeleznpm install --save @types/es6-promise
ettsc --init
. La première commande d'installation npm changera votrepackage.json
pour inclure l'es6-promise en tant que dépendance. Tsc --init créera untsconfig.json
fichier pour vous.Vous pouvez maintenant utiliser la promesse dans votre fichier dactylographié
var x: Promise<any>;
. Exécuteztsc -p .
pour compiler votre projet. Vous ne devriez avoir aucune erreur.la source
--save-dev
devrait être utilisé à la place de--save
, car la bibliothèque n'est utilisée qu'au moment de la compilation.Alternative n ° 1
Utilisez les options du compilateur
target
etlib
pour compiler directementes5
sans avoir à installer lees6-shim
. (Testé avec TypeScript2.1.4
). Dans la section lib, utilisez soites2016
oues2015.promise
.Alternative n ° 2
Utilisez NPM pour installer l' organisation à
es6-shim
partir des types .Alternative n ° 3
Avant TypeScript 2.0, utilisez des typages pour installer
es6-shim
globalement à partir de DefinitelyTyped .L'
typings
option utilisenpm
pour installertypings
globalement, puis utilisetypings
pour installer le shim. Ledt~
préfixe signifie télécharger le shim à partir de DefinitelyTyped. le--global
option signifie que les types de cales seront disponibles tout au long du projet.Voir également
https://github.com/Microsoft/TypeScript/issues/7788 - Impossible de trouver le nom 'Promise' & Impossible de trouver le nom 'require'
la source
es2016
n'est pas une bonne idée à moins que votre cible ne prenne en charge ES2016. Il y a beaucoup de navigateurs qui prennent en charge les promesses mais pas tout dans ES2016. Utilisezes2015.promise
pour inclure uniquement les types pour les promesses sans extraire les types pour tout dans ES2016.À partir de TypeScript 2.0, vous pouvez inclure des typages pour les promesses natives en incluant les éléments suivants dans votre
tsconfig.json
Cela inclura les déclarations de promesse fournies avec TypeScript sans avoir à définir la cible sur ES6.
la source
Si vous utilisez node.js 0.12 ou supérieur / typescript 1.4 ou supérieur, ajoutez simplement des options de compilation comme:
Plus d'informations: https://github.com/Microsoft/TypeScript/wiki/Compiler-Options
Si vous utilisez
tsconfig.json
, alors comme ceci:Plus d'informations: https://github.com/Microsoft/TypeScript/wiki/tsconfig.json
la source
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
la source
Utilisation de promesses ES6 natives avec Typescript dans Visual Studio 2015 + outils Node.js 1.2
Aucune installation npm requise car ES6 Promises est native.
Projet Node.js -> Propriétés -> Onglet Construction Typescript Version ECMAScript = ECMAScript6
la source
A. Si vous utilisez une
"target": "es5"
version de TypeScript inférieure à 2.0:Si vous utilisez
"target": "es5"
et TypeScript version 2.0 ou supérieure:C. Si vous utilisez
"target": "es6"
, il n'y a rien à faire.la source
"target": "es6"
avec TypeScript 2.1.1 et je reçois toujoursCannot find name 'Promise'
.J'ai dû passer
@types/core-js
à la version 9.36 pour qu'il fonctionne avec"target": "es5"
set dans mon tsconfig."@types/core-js": "0.9.36",
la source