Подтвердить что ты не робот

Как вернуть правильное обещание с помощью 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 возвращается и отражать ошибку, если таковой существует из службы.

благодаря

4b9b3361

Ответ 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);
    });
}