angular - Cómo devolver una Promesa adecuada con TypeScript
Así que estoy aprendiendo Angular 2 con TypeScript.
Estoy llegando a un punto en el que voy a escribir un servicio simulado que (creo) debería devolver una Promesa si el servicio obtiene el Objeto con éxito y devolver un Error si ocurre algo.
He intentado el siguiente código, pero parece que no es una sintaxis correcta para TypeScript.
Actualizó el CÓDIGO:
saveMyClass(updatedMyClass: MyClass){
//saving MyClass using http service
//return the saved MyClass or error
var savedMyClass : MyClass = someLogicThatReturnsTheSavedObject(updatedMyClass);
if(isSomeCondition)
return Promise.reject(new Error('No reason but to reject'));
else
return new Promise<MyClass>(resolve => {setTimeout( ()=>resolve(savedMyClass),1500 )} );
}
Pero para mi sorpresa, TypeScript se quejó de que "No existe un tipo común mejor entre las expresiones de retorno".
¿Cuál debería ser el código correcto? Para que pueda usarlo en mi componente para consumir si se devuelve la clase MyClass correcta y reflejar un error si existe alguno desde el servicio.
Gracias
Respuesta #1
Se considera una buena práctica incrustar todo el cuerpo de la función dentro del constructor Promise, de modo que si ocurre algún error, se convertiría en un rechazo. En este caso, creo que también resuelve tu problema.
saveMyClass(updatedMyClass: MyClass) {
return new Promise<Package>((resolve, reject) => {
//saving MyClass using http service
//return the saved MyClass or error
var savedPackage : Package = updatedPackage;
if (isSomeCondition) {
throw new Error('No reason but to reject');
}
setTimeout( () => {
resolve(savedPackage);
}, 1500);
});
}
