首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用泛型obeservable作为返回类型扩展方法

使用泛型obeservable作为返回类型扩展方法
EN

Stack Overflow用户
提问于 2016-05-17 19:50:26
回答 1查看 404关注 0票数 1

rxjs: 5.0.0-Beta2类型脚本: 1.8 Angular2: beta-9

我试图模拟一个http服务类,但在扩展这个类时遇到了问题,如angular 2文档中所述。

似乎不能重写返回类型化observable的方法?我遗漏了什么?

代码语言:javascript
复制
import {Observable} from "rxjs/Observable";
import {IQuery} from "../Query";
import {Http} from "angular2/http";

export interface IQuery<TResult> {        
}

export class A {
    public test = <T>(q: IQuery<T>): Observable<T> => {
        var queryName = this.getName(query);
        var url = `api/query/${queryName}`;
        return this.httpPost<TResult>(url, query);
    };
}

export class AMock extends A {
    public test = <T>(q: IQuery<T>): Observable<T> => {
        return mockObservable;
    };
}

Severity    Code    Description Project File    Line    Suppression State
Error   TS2415  Class 'AMock' incorrectly extends base class 'A'.
  Types of property 'test' are incompatible.
    Type '<T>(q: IQuery<T>) => Observable<T>' is not assignable to type '<T>(q: IQuery<T>) => Observable<T>'.
      Type 'Observable<any>' is not assignable to type 'Observable<any>'.
        Property 'source' is protected but type 'Observable<T>' is not a class derived from 'Observable<T>'.    TypeScript Virtual Projects

如果返回类型为T但不是observable<T>,则有效。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2016-05-18 22:12:10

我不认为问题出在您指出的代码中。可能在实际代码中的导入中或其他什么地方。

以下代码在typeScript ^1.8.10中编译正常:

代码语言:javascript
复制
import {Observable} from "rxjs/Observable";

export interface IQuery<TResult> {        
}

export class A {
    public test = <T>(q: IQuery<T>): Observable<T> => {
        return null;
    };
}

export class AMock extends A {
    public test = <T>(q: IQuery<T>): Observable<T> => {
        return null;
    };
}

我也可以使用最新的Angular2快速入门插入器(Quick Start Docs中的第一个插入器链接)来编译它。

app/main.ts文件检入:

http://plnkr.co/edit/cedJly52HvfIoS2fpzkY?p=preview

(注意:当编译失败时,输出停留在“正在加载...”永远不变,所以这就是你验证它编译的方式)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37275330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档