离子2"类型' {}'不能指定类型'任何[]"

时间:2016-03-11 03:26:24

标签: typescript angular ionic2

有一个离子2项目。

这是我的代码:

export class PostPage {
  posts : [any];

  constructor(private nav:NavController,
    private postSvc: PostService) {
  }

  ngOnInit() {    
    this.postSvc.load()
      .subscribe( data => {
          this.posts = data;
      });
  }

错误消息适用于 this.posts = data 。我将this.posts定义为[any]。同样在我的PostService中,我也将数据定义为[]。

PostService代码:

load() {
    return new Observable( observer => {

      var Post = Parse.Object.extend("Post");
      var query = new Parse.Query(Post);
      query.find({
        success: results => {
          var data = [];
          for (var i = 0; i < results.length; i++) {
            var object = results[i];
            var item = this.createPost(object);
            data.push(item);
          }
          observer.next(data);
          observer.complete();
        },
        error: error => {
          observer.error(error.message);
        }
      });
    });
  }

我收到了错误消息:

  

输入&#39; {}&#39;不能分配给任何[]

类型

如您所见,我调用 observer.next(data),其中数据为[]。我不明白为什么我的离子2认为我的数据是&#39; {}&#39; 。任何的想法?感谢。

1 个答案:

答案 0 :(得分:7)

关闭posts : [any];你可能意味着posts : any[];

  

类型'{}'不能分配给'any []

如果TypeScript编译器无法通过类型推断找出类型,则会发生这种情况,例如:如果推断类型为Promise<{}>,则传递给then的值将为{}类型。

在以下位置指定类型:

return new Observable( observer => {

例如:

return new Observable<any>( observer => {