Angular2 TS TS2322:类型'()=>任何'不能分配给'Post []'类型.

Pak*_*Pat 0 typescript angular

githubrepo

我在CLI控制台中收到上述错误,即使Post已被定义为接口/类型:user.component.ts:

import { Component } from '@angular/core';
import {PostService} from '../services/post.service';

@Component({
  selector: 'user',
  template: #`,
  providers: [PostService],
})
export class UserComponent  { 
    name: string;
    email: string;
    address: address;
    hobbies: string[];
    showhobbies: boolean;
    posts: Post[];

`   constructor(private postService: PostService) {
        ...
        this.postService.getPosts().subscribe(posts => {
            this.posts = posts;
            console.log(posts);
        });
    }
}

interface Post{
    id: number;
    title: string;
    body: string;
}
Run Code Online (Sandbox Code Playgroud)

post.service.js:

import {Injectable} from '@angular/core';
import {Http} from '@angular/http';
import 'rxjs/add/operator/map';

@Injectable()

export class PostService {
    constructor(private http: Http){
        console.log("PostService initialized");
    }

    getPosts(){
        return this.http.get('https://jsonplaceholder.typicode.com/posts')
            .map(res => res.json);
    }
}
Run Code Online (Sandbox Code Playgroud)

console.log输出一个函数文字,而不是从REST API获取的预期帖子数组: 在此输入图像描述

Vil*_*kas 5

在定义服务时使用类型,但真正的问题res.json应该是res.json():

getPosts(): Observable<Post[]> {
    return this.http.get('https://jsonplaceholder.typicode.com/posts')
        .map(res => res.json());
}
Run Code Online (Sandbox Code Playgroud)