promesas - promise typescript
cómo usar es6-promises con mecanografiado? (5)
Leí esta pregunta, pero tuve problemas para conseguir promesas de trabajar con texto mecanografiado. Espero poder hacer una guía clara. Esto es para un proyecto de servidor / nodo. De hecho, estoy usando los últimos Ioj, pero apuntando a ES5 como salida.
$ tsd query es6-promise --action install --save
$ npm install --save es6-promise
// typescript code:
/// <reference path="../../typings/es6-promise/es6-promise.d.ts"/>
var Promise = require("es6-promise").Promise;
require(''es6-promise'').polyfill();
function test():Promise {
var p:Promise = new Promise();
return p;
}
esto está dando el error:
Cannot find name ''Promise''.
// alternativamente:
var p = new Promise<string>((resolve, reject) => {
resolve(''a string'');
});
//error=> Untyped function calls may not accept type arguments.
¿Cuál es la forma recomendada de devolver una Promesa desde su propio código del lado del servidor del nodo?
referencias:
Agregue lo siguiente a package.json
:
"devDependencies": {
"@types/es6-promise": "^0.0.32"
},
"dependencies": {
"es6-promise": "~4.1.0"
}
Cambia el objetivo a "es6" en tu tsconfig.json
"compilerOptions": {"target": "es6" }
O instale TypeScript para Visual Studio 2015 también puede resolver este problema sin modificar tsconfig.json
https://www.microsoft.com/en-us/download/details.aspx?id=48593
Lo siguiente estaba en v2.1.1 + con el objetivo establecido en es5
Pude usar Promises con async/await
es6-promise
instalando es6-promise
y luego agregando esto al principio del archivo:
global.Promise = require(''es6-promise'').Promise;
Y esto para tsconfig.json
"lib": [ "es2015.promise", "es5" ],
El uso del formulario de import { Promise }
no funcionó para mí ya que otras bibliotecas fallaban (por ejemplo, axios)
Necesitaba rellenar esto para un marco diferente (específicamente, axios); No necesitaba crear mis propias promesas, por lo que ninguna de estas soluciones funcionó para mí. Afortunadamente, la respuesta fue simple, si bien escondida:
import { polyfill } from ''es6-promise''
polyfill();
main.ts
import {Promise} from ''es6-promise'';
const p: Promise<string> = new Promise (
(resolve: (str: string)=>void, reject: (str: string)=>void) => {
const a: string = "hello from Promise";
resolve(a);
}
);
p.then((st) => {
console.log(st);
});
tsconfig.json
{
"compilerOptions": {
"target": "es3",
"module": "commonjs",
"declaration": false,
"noImplicitAny": false,
"noLib": false
},
"filesGlob": [
"./**/*.ts",
"!./node_modules/**/*.ts"
],
"files": [
"./main.ts",
"./typings/es6-promise/es6-promise.d.ts"
]
}
compileandrun.sh
#!/bin/sh
npm install es6-promise
tsd install es6-promise
tsc
node main.js