How to return a proper Promise with TypeScript

大兔子大兔子 提交于 2020-01-12 03:57:27

问题


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


回答1:


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);
    });
}


来源:https://stackoverflow.com/questions/39238167/how-to-return-a-proper-promise-with-typescript

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!