1

У меня есть код, который работает в угловом 2, но когда я пытаюсь использовать его в проекте nativescript, это не удается. я пытаюсь отказаться от обещания, как это:Как отклонить обещание от NativeScript - Angular 2

login(credentials:Credentials):Promise<User> { 
    if (!valid) { 
     return Promise.reject<User>("Invalid password"); 
    }else { 
     return Promise.resolve(new User("some user")); 
    } 
} 

И я получаю эту ошибку:

Error:(32, 22) TS2346: Supplied parameters do not match any signature of call target. 

ответ

4

Вы пропустили вернуть обещание, когда вы Отклонено его. Ошибка прямо говорит, что вы не возвращаете Promise<User> из функции. Так как тип возвращаемого метода равен Promise<User>, он всегда возвращает этот объект.

PS: После редактирования в OP обнаружил, что метод может возвращать два типа данных, в случае успеха это будет User объект, на отклонять его string. Так что для такого случая я предпочел бы, чтобы вы изменить метод тип возвращаемого в User | string

кодекса

login(credentials:Credentials):Promise<User | string> { 
    if (!valid) { 
     //returned promise here which was missing and failing compilation 
     return Promise.reject("Invalid password"); 
    }else { 
     return Promise.resolve(new User("some user")); 
    } 
} 
+0

Спасибо за ответ, вот это не проблема! Я забуду поставить вопрос на вопрос, но у меня есть код! Я отредактирую вопрос. –

+0

@ DiegoGonzález извинения, проверьте обновленный ответ –

+0

Спасибо! Но 'Promise.reject (« Неверный пароль »);' не возвращает Promise ?? –