1

각도 2에서 작동하는 코드가 있지만 nativescript 프로젝트에서이 코드를 사용하려고하면 실패합니다. 미안 이런 약속을 거부하려고 :NativeScript에서 약속을 거부하는 방법 - 각도 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 : 영업 이익 편집하는 방법이 string 거부에, 그것은 User 객체가 될 것입니다 성공, 두 가지 유형의 데이터를 반환 할 수 있습니다 발견 후. 그래서 이러한 경우에 당신이 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 ("잘못된 암호");은 약속을 반환하지 않습니다 ?? –

관련 문제