[英]Angular, Type 'Promise<void | Task>'
編譯項目時出現此錯誤。 錯誤終端:
ERROR in src/app/services/task.ts(44,5): error TS2322: Type
'Promise<void | Task>' is not assignable to type 'Promise<Task>'.
Type 'void | Task' is not assignable to type 'Task'.
Type 'void' is not assignable to type 'Task'.
這是清除錯誤的代碼。
26 loadTasks(): Promise<Task[]> {
27 const url = `${this.tasksUrl}?access_token=${localStorage.getItem('token')}`;
28 return this.http.get(url)
29 .toPromise()
30 .then(res => res.json() as Task[])
31 .catch(error => this.handleError(error, 'Could not load tasks!'));
32 }
33 getTask(id: number): Promise<Task> {
34 const url = `${this.tasksUrl}/${id}?access_token=${localStorage.getItem('token')}`;
35 return this.http.get(url)
36 .toPromise()
37 .then(res => res.json() as Task)
38 .catch(error => this.handleError(error, 'Could not load task!'));
39 }
40 create(task): Promise<Task> {
41 task['due_date'] = task['due_date']['formatted'];
42 let body = JSON.stringify({task: task});
43 const url = `${this.tasksUrl}?access_token=${localStorage.getItem('token')}`;
44 return this.http.post(url, body, { headers: this.headers })
45 .toPromise()
46 .then(res => res.json() as Task)
47 .catch(error => {
48 this.handleError(error, 'Could not create task!')
49 });
50 }
51
52 update(task) {
53 const url = `${this.tasksUrl}/${task.id}?access_token=${localStorage.getItem('token')}`;
54 if (task['due_date'] && task['due_date']['formatted']) {
55 task['due_date'] = task['due_date']['formatted'];
56 }
57 return this.http.put(url, JSON.stringify(task), { headers: this.headers })
58 .toPromise()
59 .then(res => res.json() as Task)
60 .catch(error => {
61 this.handleError(error, 'Could not update task!')
62 });
63 }
create(task): Promise<Task | void>
error terminal:
ERROR in src/app/components/tasks/form.ts(62,26): error TS2345: Argument of type 'void | Task' is not assignable to parameter of type 'Task'.
Type 'void' is not assignable to type 'Task'.
告訴我如何解決此錯誤,我將不勝感激。
我最近將打字稿更新到2.7.2
版后遇到了同樣的問題。
我通過更改catch
塊來修復它。 我的errorHandler()
拋出類型為ErrorObservable
異常Observable.throw
我只是從調用errorHandler()
自定義方法中鏈接了Observable.throw
。 你的情況是create()
你可以暗中做這個
create(task): Promise<Task> {
task['due_date'] = task['due_date']['formatted'];
let body = JSON.stringify({task: task});
const url = `${this.tasksUrl}?access_token=${localStorage.getItem('token')}`;
return this.http.post(url, body, { headers: this.headers })
.toPromise()
.then(res => res.json() as Task)
.catch(error => {
Observable.throw(this.handleError(error, 'Could not create task!')); // chain Observable.throw
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.