Как вернуть правильное обещание с помощью 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);
});
}