Soy un principiante completo en TypeScript y me pregunto si es posible usar las promesas de ES6 en Typecript y qué tendría que hacer para que funcionen. Estoy ejecutando el nodo 0.11.14 y obtengo un error durante la compilación "No puedo encontrar el nombre 'Promesa'"
javascript
typescript
es6-promise
dchang
fuente
fuente

es6-promiseRespuestas:
El lib.d.ts actual no tiene promesas definidas, por lo que necesita un archivo de definición adicional, por eso está obteniendo errores de compilación.
Podría, por ejemplo, usar (como dice @elclanrs) usar el paquete es6-promise con el archivo de definición de DefinitelyTyped: es6-promise definition
Luego puede usarlo así:
editar Puede usarlo sin una definición cuando apunta a ES6 (con el compilador TypeScript): tenga en cuenta que aún necesita que Promise exista en el curso de ejecución (por lo que no funcionará en navegadores antiguos :)) Agregue / Edite lo siguiente en su
tsconfig.json:edit 2 Cuando salga TypeScript 2.0, las cosas cambiarán un poco (aunque lo anterior todavía funciona) pero los archivos de definición se pueden instalar directamente con npm como a continuación:
npm install --save @types/es6-promise- fuenteedit3 Actualizando la respuesta con más información para usar los tipos.
Cree un
package.jsonarchivo con solo{ }el contenido (si aún no tiene un package.json. Llamenpm install --save @types/es6-promiseytsc --init. El primer comando de instalación de npm cambiarápackage.jsonpara incluir el es6-promise como una dependencia. Tsc --init creará untsconfig.jsonarchivo para ti.Ahora puede usar la promesa en su archivo de mecanografía
var x: Promise<any>;. Ejecutetsc -p .para compilar su proyecto. No deberías tener errores.fuente
--save-devdebería usarse en lugar de--save, ya que la biblioteca solo se usa en tiempo de compilación.Alternativa # 1
Utilice las opciones del compilador
targetylibpara compilar directamentees5sin necesidad de instalar eles6-shim. (Probado con TypeScript2.1.4). En la sección lib, use cualquieraes2016oes2015.promise.Alternativa # 2
Utilice la NGP para instalar el
es6-shimde la organización de tipos .Alternativa # 3
Antes de TypeScript 2.0, use tipings para instalar
es6-shimglobalmente desde DefinitelyTyped .La
typingsopción se usanpmpara instalartypingsglobalmente y luego se usatypingspara instalar la cuña. Eldt~prefijo significa descargar la cuña de DefinitelyTyped. La--globalopción significa que los tipos de cuñas estarán disponibles durante todo el proyecto.Ver también
https://github.com/Microsoft/TypeScript/issues/7788 - No se puede encontrar el nombre 'Promesa' y no se puede encontrar el nombre 'requerir'
fuente
es2016no es una buena idea a menos que su objetivo sea compatible con ES2016. Hay muchos navegadores que admiten promesas, pero no todo en ES2016. Usees2015.promisepara incluir solo los tipos de promesas sin incluir tipos para todo en ES2016.A partir de TypeScript 2.0, puede incluir tipificaciones para promesas nativas incluyendo lo siguiente en su
tsconfig.jsonEsto incluirá las declaraciones de promesa que vienen con TypeScript sin tener que establecer el objetivo en ES6.
fuente
Si usa node.js 0.12 o superior / typecript 1.4 o superior, simplemente agregue opciones de compilación como:
Más información: https://github.com/Microsoft/TypeScript/wiki/Compiler-Options
Si usa
tsconfig.json, entonces así:Más información: https://github.com/Microsoft/TypeScript/wiki/tsconfig.json
fuente
Esta es la forma más reciente de hacer esto, la respuesta anterior está desactualizada:
typings install --global es6-promisefuente
Uso de promesas ES6 nativas con mecanografiado en Visual Studio 2015 + herramientas Node.js 1.2
No se requiere instalación npm ya que ES6 Promises es nativo.
Proyecto Node.js -> Propiedades -> pestaña Crear mecanografiado Versión ECMAScript = ECMAScript6
fuente
A. Si usa una
"target": "es5"versión TypeScript inferior a 2.0:B. Si usa
"target": "es5"y TypeScript versión 2.0 o superior:C. Si se usa
"target": "es6", no hay necesidad de hacer nada.fuente
"target": "es6"con TypeScript 2.1.1 y todavía estoy obteniendoCannot find name 'Promise'.Tuve que bajar
@types/core-jsa 9.36 para que funcione con"target": "es5"set en mi tsconfig."@types/core-js": "0.9.36",fuente