只是想知道这样的事情是否可行,如果是,那么正确的语法是什么:
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>>;
}
基本上我想返回一个对象,该对象具有使用者在方法调用中使用另一个接口的所有方法/道具指定的对象的所有属性。
答案 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>>;
}