Как вернуть правильное обещание с помощью TypeScript

поэтому я изучаю Angular 2 с помощью typescript.

Я достигаю точки, чтобы написать издевательскую службу, которая (я считаю) должна вернуть обещание, если служба успешно получит объект и вернет ошибку, если что-нибудь произойдет.

Я пробовал следующий код, но похоже, что это не синтаксис записи для 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  )}  );
    }

но, к моему удивлению, typescript жаловался, что " нет лучшего общего типа среди возвращаемые выражения".

каким должен быть правильный код? Чтобы я мог использовать свой компонент для использования, если возвращается правильный MyClass, и отражать ошибку, если она существует от службы.

спасибо

1 ответов


считается хорошей практикой вставлять все тело функции внутри 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);
    });
}