1
我正在清理我的Angular 4應用程序的類型,並且我想定義負責API調用的Database
類的接口。我可以爲一個類的方法定義一個泛型typescript接口嗎?
這些類將有方法接收Criteria
對象,並返回ResultItems[]
廣泛不同的Observable。所以,我試圖定義這個接口:
import { Observable } from 'rxjs/Observable';
export interface Database<C> {
[methodName: string]: (args: C) => Observable<any>;
}
覆蓋接收Criteria
並返回any
事情的方法。
然後我儘量讓這種實現的:
@Injectable()
export class ItemsDatabase<ItemsCriteria> implements Database<ItemsCriteria> {
constructor(private api: ApiService) {}
fetch(args: ItemsCriteria): Observable<APIResponse[]> {
return this.api.fetchItems(args);
}
summary(args: ItemsCriteria): Observable<SummaryResponse[]> {
return this.api.itemsSummary(args);
}
}
但打字稿否認投擲:
Class 'ItemsDatabase<ItemsCriteria>' incorrectly implements interface 'Database<ItemsCriteria>'.
Index signature is missing in type 'ItemsDatabase<ItemsCriteria>'
有什麼建議?或者這是不可能的? 在此先感謝!
哇,我從來沒有見過類似的東西,但現在的構造不適合簽名:('住宅「API」的類型'ApiService'不能分配給字符串索引類型'(args:ItemsCriteria)=> Observable'.'似乎我應該堅持一個沒有類型約束的約定。 –