错误:服务错误地实现了接口

fai*_*gir 1 typescript

我正在实现一个接口angular service.我的一个方法返回一个observable array,我想在界面中定义该签名.这就是我试图这样做的方式:

import {Observable} from 'rxjs/Observable';

export interface IItemStore<T> {
    getItems: Observable<Array<T>>;
}

@Injectable
export class ItemStore implements IItemStore<Item>{
    items: Observable<Array<Item>>;
    getItems(): Observable<Array<Item>>{
      return items;
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误:

class `ItemStore` incorrectly implements interface `IItemStore<Item>`. Types of `getItems` are incompatible. Types of property `() => Observable<Item[]>` is not assignable to type `Observable<Item>`. Property `_isScalar` is missing in type `() => Observable<Item[]>`. 
Run Code Online (Sandbox Code Playgroud)

Dan*_*cal 5

这是因为在您的界面中,您声明getItems为字段,而不是类方法.改变它getItems(),它会工作得很好.;)此外,在您提供的代码中,您在函数中thisitems字段之前缺少关键字.

PS:如果这是Angular2代码,请注意您应该使用@Injectable()函数调用.

完整代码解决方案

import {Observable} from 'rxjs/Observable';

export interface IItemStore<T> {
    getItems(): Observable<Array<T>>;
}

class Item {}

@Injectable()
export class ItemStore implements IItemStore<Item> {
    items: Observable<Array<Item>>;
    getItems(): Observable<Array<Item>>{
      return this.items;
    }
}
Run Code Online (Sandbox Code Playgroud)