This feature could be used in observable-like generic classes/interfaces: ``` ts interface EventSource<Args extends any[]> { observe(listener: (...args: Args)): void; map<T>(mapping: (...args: Args) => T): EventSource<[T]>; } ``` Currently the only way I know of is to fallback to `any`.