Ich bin ein absoluter Anfänger in Typescript und frage mich, ob es möglich ist, ES6-Versprechen in Typescript zu verwenden und was ich tun müsste, um sie zum Laufen zu bringen. Ich verwende den Knoten 0.11.14 und erhalte während der Kompilierung die Fehlermeldung "Name 'Versprechen' kann nicht gefunden werden"
javascript
typescript
es6-promise
dchang
quelle
quelle
es6-promise
Antworten:
In der aktuellen lib.d.ts sind keine Versprechen definiert, daher benötigen Sie eine zusätzliche Definitionsdatei, weshalb Kompilierungsfehler auftreten.
Sie könnten beispielsweise (wie @elclanrs sagt) das es6-Versprechen-Paket mit der Definitionsdatei von DefinitelyTyped: es6-Versprechen-Definition verwenden
Sie können es dann folgendermaßen verwenden:
Bearbeiten Sie können es ohne Definition verwenden, wenn Sie auf ES6 abzielen (mit dem TypeScript-Compiler). - Beachten Sie, dass das Versprechen zur Laufzeit natürlich noch vorhanden sein muss (damit es in alten Browsern nicht funktioniert :))
tsconfig.json
::edit 2 Wenn TypeScript 2.0 herauskommt, ändern sich die Dinge ein wenig (obwohl oben noch funktioniert), aber Definitionsdateien können direkt mit npm wie unten installiert werden:
npm install --save @types/es6-promise
- Quelleedit3 Antwort mit weiteren Informationen zur Verwendung der Typen aktualisieren.
Erstellen Sie eine
package.json
Datei nur{ }
mit dem Inhalt (wenn Sie noch keine package.json haben. Rufen Sienpm install --save @types/es6-promise
und auftsc --init
. Mit dem ersten Befehl zur Installation von npm wird Ihr Befehl geändertpackage.json
, um das es6-Versprechen als Abhängigkeit einzuschließen. Tsc --init erstellt einetsconfig.json
Datei für dich.Sie können das Versprechen jetzt in Ihrer Typoskriptdatei verwenden
var x: Promise<any>;
. Ausführentsc -p .
, um Ihr Projekt zu kompilieren. Sie sollten keine Fehler haben.quelle
--save-dev
sollte anstelle von verwendet werden--save
, da die Bibliothek nur zur Kompilierungszeit verwendet wird.Alternative Nr. 1
Verwenden Sie die Optionen
target
undlib
compiler, um direkt zu kompilieren,es5
ohne die installieren zu müssenes6-shim
. (Getestet mit TypeScript2.1.4
). Verwenden Sie im Abschnitt lib entwederes2016
oderes2015.promise
.Alternative Nr. 2
Verwenden Sie NPM, um die Organisation
es6-shim
aus dem Typ zu installieren .Alternative Nr. 3
Verwenden Sie vor TypeScript 2.0 Typisierungen , um das
es6-shim
global von DefinitelyTyped zu installieren .Die
typings
Option wirdnpm
zurtypings
globalen Installation und danntypings
zur Installation des Shims verwendet. Dasdt~
Präfix bedeutet, dass der Shim von DefinitelyTyped heruntergeladen wird. Das--global
Option bedeutet, dass die Shim-Typen während des gesamten Projekts verfügbar sind.Siehe auch
https://github.com/Microsoft/TypeScript/issues/7788 - Der Name "Versprechen" und der Name "Erforderlich" können nicht gefunden werden.
quelle
es2016
ist keine gute Idee, es sei denn, Ihr Ziel unterstützt ES2016. Es gibt viele Browser, die Versprechen unterstützen, aber nicht alles in ES2016. Verwenden Siees2015.promise
diese Option, um nur die Typen für Versprechen einzuschließen, ohne Typen für alles in ES2016 einzuziehen.Ab TypeScript 2.0 können Sie Typisierungen für native Versprechen einschließen, indem Sie Folgendes in Ihre Liste aufnehmen
tsconfig.json
Dies schließt die mit TypeScript gelieferten Versprechen ein, ohne dass das Ziel auf ES6 festgelegt werden muss.
quelle
Wenn Sie node.js 0.12 oder höher / typescript 1.4 oder höher verwenden, fügen Sie einfach Compileroptionen hinzu wie:
Weitere Informationen: https://github.com/Microsoft/TypeScript/wiki/Compiler-Options
Wenn Sie verwenden
tsconfig.json
, dann wie folgt:Weitere Informationen: https://github.com/Microsoft/TypeScript/wiki/tsconfig.json
quelle
Dies ist der jüngste Weg, um dies zu tun. Die obige Antwort ist veraltet:
typings install --global es6-promise
quelle
Verwenden nativer ES6-Versprechen mit Typescript in Visual Studio 2015 + Node.js-Tools 1.2
Keine npm-Installation erforderlich, da ES6 Promises nativ ist.
Node.js-Projekt -> Eigenschaften -> Registerkarte Typescript Build ECMAScript version = ECMAScript6
quelle
A. Wenn Sie eine
"target": "es5"
TypeScript-Version unter 2.0 verwenden:B. Wenn Sie
"target": "es5"
TypeScript Version 2.0 oder höher verwenden:C. Wenn Sie verwenden
"target": "es6"
, müssen Sie nichts tun.quelle
"target": "es6"
mit TypeScript 2.1.1 und bekomme immer nochCannot find name 'Promise'
.Ich musste ein Downgrade
@types/core-js
auf 9.36 durchführen, damit es mit"target": "es5"
set in meiner tsconfig funktioniert."@types/core-js": "0.9.36",
quelle