So I am learning Angular 2 with typescript.
I am reaching a point to write a mocking service which (I believe) should return a Promise if the service get the Object Successfully and Return an Error if anything happens.
I have tried following code but looks like it is not a write syntax for typescript.
Updated the CODE:
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 )} );
}
But to my surprise, the typescript complained that "No best common type exists among return expressions".
What should be the right code? So that I could use on my component to consume if proper MyClass is returned and reflect error if any exists from service.
Thanks
It is considered a good practice to embed the whole function body inside the Promise
constructor, so should any error happen, it would be converted to a rejection. In this case it solves your problem too I believe.
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);
});
}