如何在Typescript中创建扩展泛型返回类型

时间:2017-03-23 04:44:11

标签: typescript typescript2.0

只是想知道这样的事情是否可行,如果是,那么正确的语法是什么:

 export interface IElement {...}

 export interface X {
     one<T>(name: string, id: string): T extends IElement;
     two<T>(name: string, id: string): Observable<T extends IElement>;
     three<T>(name: string, id: string): Observable<Array<T extends IElement>>;
 }

基本上我想返回一个对象,该对象具有使用者在方法调用中使用另一个接口的所有方法/道具指定的对象的所有属性。

2 个答案:

答案 0 :(得分:1)

这是可能的。只需将extends约束放在通用签名中:

export interface IElement {}

export interface X {
    one<T extends IElement>(name: string, id: string): T;
    two<T extends IElement>(name: string, id: string): Observable<T>;
    three<T extends IElement>(name: string, id: string): Observable<Array<T>>;
}

答案 1 :(得分:0)

交叉类型

interface IElement { }

interface X {
    one<T>(name: string, id: string): T & IElement;
    two<T>(name: string, id: string): Observable<T & IElement>;
    three<T>(name: string, id: string): Observable<Array<T & IElement>>;
}