如何 return 使用 TypeScript 进行适当的 Promise

How to return a proper Promise with TypeScript

所以我正在学习 Angular 2 with typescript。

我正在写一个模拟服务(我相信)应该 return 如果服务成功获得对象,则应该是一个 Promise 并且如果发生任何事情, Return 应该是一个错误。

我试过下面的代码,但看起来它不是 typescript 的写语法。

更新了代码:

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

但令我惊讶的是,打字稿抱怨 "No best common type exists among return expressions"。

正确的代码应该是什么?这样我就可以在我的组件上使用,如果正确的 MyClass 被 return 编辑,并且如果服务中存在任何错误则反映错误。

谢谢

将整个函数体嵌入 Promise 构造函数中被认为是一种很好的做法,因此如果发生任何错误,它将被转换为拒绝。在这种情况下,我相信它也能解决您的问题。

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