diff --git a/angularjs/angular-tests.ts b/angularjs/angular-tests.ts index 50e7562178..0174a0d616 100644 --- a/angularjs/angular-tests.ts +++ b/angularjs/angular-tests.ts @@ -933,3 +933,19 @@ function NgModelControllerTyping() { }); }; } + +function ngFilterTyping() { + var $filter: angular.IFilterService; + var items: string[]; + + $filter("name")(items, "test"); + $filter("name")(items, {name: "test"}); + $filter("name")(items, (val, index, array) => { + return array; + }); + $filter("name")(items, (val, index, array) => { + return array; + }, (actual, expected) => { + return actual == expected; + }); +} \ No newline at end of file diff --git a/angularjs/angular.d.ts b/angularjs/angular.d.ts index 6a098b5716..dac88280d6 100644 --- a/angularjs/angular.d.ts +++ b/angularjs/angular.d.ts @@ -782,7 +782,23 @@ declare module angular { * * @param name Name of the filter function to retrieve */ - (name: string): Function; + (name: string): IFilterFunc; + } + + interface IFilterFunc { + (array: T[], expression: string | IFilterPatternObject | IFilterPredicateFunc, comparator?: IFilterComparatorFunc|boolean): T[]; + } + + interface IFilterPatternObject { + [name: string]: string; + } + + interface IFilterPredicateFunc { + (value: T, index: number, array: T[]): T[]; + } + + interface IFilterComparatorFunc { + (actual: T, expected: T): boolean; } /**