From d0a264d5fff335375f32d643db5054b03983c3ed Mon Sep 17 00:00:00 2001 From: "Ciuca, Alexandru" Date: Mon, 14 Sep 2015 16:55:47 +0300 Subject: [PATCH] angularjs - better granularity for filter service parameter types --- angularjs/angular-tests.ts | 16 ++++++++++++++++ angularjs/angular.d.ts | 18 +++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) 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 d183167b59..be0b0861a9 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; } /**