我正在实现一个接口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)
这是因为在您的界面中,您声明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;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
890 次 |
| 最近记录: |