//// [missingTypeArguments3.ts] declare module linq { interface Enumerable { OrderByDescending(keySelector?: string): OrderedEnumerable; GroupBy(keySelector: (element: T) => TKey): Enumerable>; GroupBy(keySelector: (element: T) => TKey, elementSelector: (element: T) => TElement): Enumerable>; ToDictionary(keySelector: (element: T) => TKey): Dictionary; } interface OrderedEnumerable extends Enumerable { ThenBy(keySelector: (element: T) => TCompare): OrderedEnumerable; // used to incorrectly think this was missing a type argument } interface Grouping extends Enumerable { Key(): TKey; } interface Lookup { Count(): number; Get(key): Enumerable; Contains(key): boolean; ToEnumerable(): Enumerable>; } interface Dictionary { Add(key: TKey, value: TValue): void; Get(ke: TKey): TValue; Set(key: TKey, value: TValue): boolean; Contains(key: TKey): boolean; Clear(): void; Remove(key: TKey): void; Count(): number; ToEnumerable(): Enumerable>; } interface KeyValuePair { Key: TKey; Value: TValue; } } //// [missingTypeArguments3.js]