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

时间:2017-02-01 16:44:24

标签: 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;
    }
}

这是我得到的错误:

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[]>`. 

1 个答案:

答案 0 :(得分:5)

这是因为在您的界面中,您将getItems声明为字段,而不是类方法。将其更改为getItems(),它会正常工作。 ;) 此外,在您提供的代码中,您在函数中的this字段之前缺少items个关键字。

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;
    }
}