ionic 2 "Type '{}' is not assignable to type 'any[]"

10,536

For off posts : [any]; you probably meant posts : any[];

Type '{}' is not assignable to type 'any[]

This can happen if the TypeScript compiler cannot figure out the type by type inference e.g. if the inferred type is Promise<{}> the value passed to then will be of type {}.

Specify the type in:

return new Observable( observer => {

e.g:

return new Observable<any>( observer => {
Share:
10,536
Bagusflyer
Author by

Bagusflyer

Updated on June 09, 2022

Comments

  • Bagusflyer
    Bagusflyer almost 2 years

    There is an ionic 2 project.

    Here is my code:

    export class PostPage {
      posts : [any];
    
      constructor(private nav:NavController,
        private postSvc: PostService) {
      }
    
      ngOnInit() {    
        this.postSvc.load()
          .subscribe( data => {
              this.posts = data;
          });
      }
    

    The error message is for this.posts = data. I defined this.posts as [any]. Also in my PostService I defined the data as [] too.

    Code for 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);
            }
          });
        });
      }
    

    I got the error message:

    Type '{}' is not assignable to type 'any[]

    As you see, I call observer.next(data) where the data is []. I don't understand why my ionic 2 think my data is a '{}' . Any idea? Thanks.

  • Robert
    Robert about 6 years
    For everybody coming here: In my case this solved it: return new Promise<any[]>(resolve => { ...