export interface Interceptable> { addInterceptor(interceptor: T): Interceptable; removeInterceptor(interceptor: T): Interceptable; clearInterceptors(interceptors?: T[]): Interceptable; } export interface Interceptor { (data: T, method: string, ctx?: any): D; }