borisyankov/DefinitelyTyped — pull request #2005 by miffels (2014-04-08 12:18:54+00:00)
Title: Enhanced call interface definitions

The call interface of ``angular-resource`` (``IResourceClass`` ``query``, ``get``, ``save``, ``update``, ``delete`` and their respective ``IResource`` ``$``-prefixed instance counterparts) was not fully reflected by the previous TypeScript definitions. This pull request focuses on four issues:

1. The type definitions would often say ``dataOrParams`` in the method signatures even though it is possible to make a clearer statement (see [the code](https://github.com/angular/angular.js/blob/v1.2.0/src/ngResource/resource.js#L463)). ``dataOrParams`` has been replaced by ``data`` or ``params`` respectively, where it is appropriate.
2. ``angular-resource`` distinguishes between instance calls and static calls (the former being prefixed by ``$``). First of all, these are different in their return types: Instance calls always return a promise, while static calls always return the instance (or collection) retrieved (see [the code](https://github.com/angular/angular.js/blob/v1.2.0/src/ngResource/resource.js#L538-L549))
3. Another difference between static and instance calls is that the interface of instance calls is much simpler (see [the code](https://github.com/angular/angular.js/blob/v1.2.0/src/ngResource/resource.js#L587-L593))
4. Finally, ``query`` does not simply return an array of ``IResource`` objects, but the array with `` $promise`` and ``$resolved`` appended. I created a new type (``IResourceArray``) for that.