这是源代码:
export class PostComponent implements OnInit {
posts: any[];
constructor(private http: Http, private service: PostService) {
}
getAll1() {
const url = 'http://jsonplaceholder.typicode.com/posts';
this.http.get(url)
.map((respone) => respone.json())
.subscribe(posts => this.posts = posts );
}
}
`
它工作正常,但如果我为" respone.json"添加大括号,那么visual stdio代码提示错误(见下文)。 添加花括号之后的源代码如下:
export class PostComponent implements OnInit {
posts: any[];
constructor(private http: Http, private service: PostService) {
}
getAll1() {
const url = 'http://jsonplaceholder.typicode.com/posts';
this.http.get(url)
.map((respone) => {respone.json();})
.subscribe(posts => this.posts = posts );
}
}
错误出现在单词" this.posts"最后一行的错误是:[ts] Type' void'不能指定为'任何[]'。
为什么?
答案 0 :(得分:4)
.map((respone) => respone.json())
实际上与此相同:
.map((respone) => { return respone.json() })
虽然.map((respone) => { respone.json() })
与此类似:
.map((respone) => { respone.json(); return undefined; })
因此,在您的第二个代码块中,respone.json()
才被解雇。