Closed
Description
TypeScript Version: 2.1.5
Code
interface DataSnapshot {
child(path: string): DataSnapshot;
}
interface Snapshot<T> extends DataSnapshot {
child<U extends keyof T>(path: U): Snapshot<T[U]>;
}
Expected behavior:
Should compile.
Actual behavior:
Gives error:
Excessive stack depth comparing types 'Snapshot' and 'DataSnapshot'. [2321]
If the definition of DataSnapshot#child
is changed to child(path:string): any;
, then no error occurs.