Как вернуть правильное обещание с помощью TypeScript
Поэтому я изучаю Angular 2 с машинописным текстом.
Я добираюсь до места, чтобы написать насмешливую службу, которая (я считаю) должна вернуть обещание, если служба получит объект успешно и вернет ошибку, если что-нибудь случится.
Я пробовал следующий код, но похоже, что это не синтаксис записи для машинописного текста.
Обновлен КОД:
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 )} );
}
Но, к моему удивлению, машинописный материал жаловался, что "среди возвращаемых выражений нет лучшего общего типа".
Каким должен быть правильный код? Чтобы я мог использовать на моем компоненте, чтобы использовать, если правильный 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);
});
}