Leonardo
Leonardo

Reputation: 1

Type 'Observable<unknown>' is not assignable to type 'Observable<Sidebar>'

I was trying to upgrade my angular app from v4 to v9 while i faced this error:

Type 'Observable' is not assignable to type 'Observable'

The error occurs here (mock-sidebar.service.ts)

return ObservableCreator.createFromData(SIDEBAR) 

mock-sidebar.service.ts


import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import { ObservableCreator } from '../pages/common/observable/observable-creator';
import { Sidebar } from '../entities/sidebar';
import { SIDEBAR } from '../mocks/sidebar-mocks';

@Injectable()
export class SidebarService {
    getSidebar(): Observable<Sidebar> {
        return ObservableCreator.createFromData(SIDEBAR);
    }
}

observable-creator.ts

import { Observable } from 'rxjs';

export class ObservableCreator {
    public static createFromData(data: any) {
        const observable = new Observable((observer: any) => {
            observer.next(data);
            observer.complete();
        });
        return observable;
    }
}

Upvotes: 0

Views: 110

Answers (1)

Mrk Sef
Mrk Sef

Reputation: 8052

One way to fix your problem:

public static createFromData(data: any) {
    return of(data);
}

Another way to fix your problem using generics:

public static createFromData<T>(data: T): Observable<T> {
  return new Observable<T>(observer => {
    observer.next(data);
    observer.complete();
  });
}

Upvotes: 1

Related Questions