UNPKG

typescript-closure-tools

Version:

Command-line tools to convert closure-style JSDoc annotations to typescript, and to convert typescript sources to closure externs files

381 lines (348 loc) 17 kB
/// <reference path="../../../globals.d.ts" /> declare module goog.object { /** * Calls a function for each element in an object/map/hash. * * @param {Object.<K,V>} obj The object over which to iterate. * @param {function(this:T,V,?,Object.<K,V>):?} f The function to call * for every element. This function takes 3 arguments (the element, the * index and the object) and the return value is ignored. * @param {T=} opt_obj This is used as the 'this' object within f. * @template T,K,V */ function forEach<V>(obj: { [key: string]: V }, f: (_0: V, _1: any, _2: { [key: string]: V }) => any, opt_obj?: any): void; function forEach<V>(obj: { [key: number]: V }, f: (_0: V, _1: any, _2: { [key: number]: V }) => any, opt_obj?: any): void; /** * Calls a function for each element in an object/map/hash. If that call returns * true, adds the element to a new object. * * @param {Object.<K,V>} obj The object over which to iterate. * @param {function(this:T,V,?,Object.<K,V>):boolean} f The function to call * for every element. This * function takes 3 arguments (the element, the index and the object) * and should return a boolean. If the return value is true the * element is added to the result object. If it is false the * element is not included. * @param {T=} opt_obj This is used as the 'this' object within f. * @return {!Object.<K,V>} a new object in which only elements that passed the * test are present. * @template T,K,V */ function filter<V>(obj: { [key: string]: V }, f: (_0: V, _1: any, _2: { [key: string]: V }) => boolean, opt_obj?: any): { [key: string]: V }; function filter<V>(obj: { [key: number]: V }, f: (_0: V, _1: any, _2: { [key: string]: V }) => boolean, opt_obj?: any): { [key: number]: V }; /** * For every element in an object/map/hash calls a function and inserts the * result into a new object. * * @param {Object.<K,V>} obj The object over which to iterate. * @param {function(this:T,V,?,Object.<K,V>):R} f The function to call * for every element. This function * takes 3 arguments (the element, the index and the object) * and should return something. The result will be inserted * into a new object. * @param {T=} opt_obj This is used as the 'this' object within f. * @return {!Object.<K,R>} a new object with the results from f. * @template T,K,V,R */ function map<V, R>(obj: { [key: string]: V }, f: (_0: V, _1: any, _2: { [key: string]: V }) => R, opt_obj?: any): { [key: string]: R }; function map<V, R>(obj: { [key: number]: V }, f: (_0: V, _1: any, _2: { [key: number]: V }) => R, opt_obj?: any): { [key: number]: R }; /** * Calls a function for each element in an object/map/hash. If any * call returns true, returns true (without checking the rest). If * all calls return false, returns false. * * @param {Object.<K,V>} obj The object to check. * @param {function(this:T,V,?,Object.<K,V>):boolean} f The function to * call for every element. This function * takes 3 arguments (the element, the index and the object) and should * return a boolean. * @param {T=} opt_obj This is used as the 'this' object within f. * @return {boolean} true if any element passes the test. * @template T,K,V */ function some<V>(obj: { [key: string]: V }, f: (_0: V, _1: any, _2: { [key: string]: V }) => boolean, opt_obj?: any): boolean; function some<V>(obj: { [key: number]: V }, f: (_0: V, _1: any, _2: { [key: number]: V }) => boolean, opt_obj?: any): boolean; /** * Calls a function for each element in an object/map/hash. If * all calls return true, returns true. If any call returns false, returns * false at this point and does not continue to check the remaining elements. * * @param {Object.<K,V>} obj The object to check. * @param {?function(this:T,V,?,Object.<K,V>):boolean} f The function to * call for every element. This function * takes 3 arguments (the element, the index and the object) and should * return a boolean. * @param {T=} opt_obj This is used as the 'this' object within f. * @return {boolean} false if any element fails the test. * @template T,K,V */ function every<V>(obj: { [key: string]: V }, f: (_0: V, _1: any, _2: { [key: string]: V }) => boolean, opt_obj?: any): boolean; function every<V>(obj: { [key: number]: V }, f: (_0: V, _1: any, _2: { [key: number]: V }) => boolean, opt_obj?: any): boolean; /** * Returns the number of key-value pairs in the object map. * * @param {Object} obj The object for which to get the number of key-value * pairs. * @return {number} The number of key-value pairs in the object map. */ function getCount(obj: Object): number; /** * Returns one key from the object map, if any exists. * For map literals the returned key will be the first one in most of the * browsers (a know exception is Konqueror). * * @param {Object} obj The object to pick a key from. * @return {string|undefined} The key or undefined if the object is empty. */ function getAnyKey(obj: Object): string|any /*undefined*/; /** * Returns one value from the object map, if any exists. * For map literals the returned value will be the first one in most of the * browsers (a know exception is Konqueror). * * @param {Object.<K,V>} obj The object to pick a value from. * @return {V|undefined} The value or undefined if the object is empty. * @template K,V */ function getAnyValue<V>(obj: { [key: string]: V }): any /*V|any (undefined)*/; function getAnyValue<V>(obj: { [key: number]: V }): any /*V|any (undefined)*/; /** * Whether the object/hash/map contains the given object as a value. * An alias for goog.object.containsValue(obj, val). * * @param {Object.<K,V>} obj The object in which to look for val. * @param {V} val The object for which to check. * @return {boolean} true if val is present. * @template K,V */ function contains<V>(obj: { [key: string]: V }, val: V): boolean; function contains<V>(obj: { [key: number]: V }, val: V): boolean; /** * Returns the values of the object/map/hash. * * @param {Object.<K,V>} obj The object from which to get the values. * @return {!Array.<V>} The values in the object/map/hash. * @template K,V */ function getValues<V>(obj: { [key: string]: V }): V[]; function getValues<V>(obj: { [key: number]: V }): V[]; /** * Returns the keys of the object/map/hash. * * @param {Object} obj The object from which to get the keys. * @return {!Array.<string>} Array of property keys. */ function getKeys(obj: Object): string[]; /** * Get a value from an object multiple levels deep. This is useful for * pulling values from deeply nested objects, such as JSON responses. * Example usage: getValueByKeys(jsonObj, 'foo', 'entries', 3) * * @param {!Object} obj An object to get the value from. Can be array-like. * @param {...(string|number|!Array.<number|string>)} var_args A number of keys * (as strings, or numbers, for array-like objects). Can also be * specified as a single array of keys. * @return {*} The resulting value. If, at any point, the value for a key * is undefined, returns undefined. */ function getValueByKeys(obj: Object, ...var_args: (string|number|number|string[])[]): any; /** * Whether the object/map/hash contains the given key. * * @param {Object} obj The object in which to look for key. * @param {*} key The key for which to check. * @return {boolean} true If the map contains the key. */ function containsKey(obj: Object, key: any): boolean; /** * Whether the object/map/hash contains the given value. This is O(n). * * @param {Object.<K,V>} obj The object in which to look for val. * @param {V} val The value for which to check. * @return {boolean} true If the map contains the value. * @template K,V */ function containsValue<V>(obj: { [key: string]: V }, val: V): boolean; function containsValue<V>(obj: { [key: number]: V }, val: V): boolean; /** * Searches an object for an element that satisfies the given condition and * returns its key. * @param {Object.<K,V>} obj The object to search in. * @param {function(this:T,V,string,Object.<K,V>):boolean} f The * function to call for every element. Takes 3 arguments (the value, * the key and the object) and should return a boolean. * @param {T=} opt_this An optional "this" context for the function. * @return {string|undefined} The key of an element for which the function * returns true or undefined if no such element is found. * @template T,K,V */ function findKey<V>(obj: { [key: string]: V }, f: (_0: V, _1: string, _2: { [key: string]: V }) => boolean, opt_this?: any): any /*string|any (undefined)*/; function findKey<V>(obj: { [key: number]: V }, f: (_0: V, _1: number, _2: { [key: number]: V }) => boolean, opt_this?: any): any /*string|any (undefined)*/; /** * Searches an object for an element that satisfies the given condition and * returns its value. * @param {Object.<K,V>} obj The object to search in. * @param {function(this:T,V,string,Object.<K,V>):boolean} f The function * to call for every element. Takes 3 arguments (the value, the key * and the object) and should return a boolean. * @param {T=} opt_this An optional "this" context for the function. * @return {V} The value of an element for which the function returns true or * undefined if no such element is found. * @template T,K,V */ function findValue<V>(obj: { [key: string]: V }, f: (_0: V, _1: string, _2: { [key: string]: V }) => boolean, opt_this?: any): V; function findValue<V>(obj: { [key: number]: V }, f: (_0: V, _1: number, _2: { [key: number]: V }) => boolean, opt_this?: any): V; /** * Whether the object/map/hash is empty. * * @param {Object} obj The object to test. * @return {boolean} true if obj is empty. */ function isEmpty(obj: Object): boolean; /** * Removes all key value pairs from the object/map/hash. * * @param {Object} obj The object to clear. */ function clear(obj: Object): void; /** * Removes a key-value pair based on the key. * * @param {Object} obj The object from which to remove the key. * @param {*} key The key to remove. * @return {boolean} Whether an element was removed. */ function remove(obj: Object, key: any): boolean; /** * Adds a key-value pair to the object. Throws an exception if the key is * already in use. Use set if you want to change an existing pair. * * @param {Object.<K,V>} obj The object to which to add the key-value pair. * @param {string} key The key to add. * @param {V} val The value to add. * @template K,V */ function add<V>(obj: { [key: string]: V }, key: string, val: V): void; function add<V>(obj: { [key: number]: V }, key: number, val: V): void; /** * Returns the value for the given key. * * @param {Object.<K,V>} obj The object from which to get the value. * @param {string} key The key for which to get the value. * @param {R=} opt_val The value to return if no item is found for the given * key (default is undefined). * @return {V|R|undefined} The value for the given key. * @template K,V,R */ function get<V,R>(obj: { [key: string]: V }, key: string, opt_val?: R): any /*V|R|any (undefined)*/; function get<V,R>(obj: { [key: number]: V }, key: number, opt_val?: R): any /*V|R|any (undefined)*/; /** * Adds a key-value pair to the object/map/hash. * * @param {Object.<K,V>} obj The object to which to add the key-value pair. * @param {string} key The key to add. * @param {V} value The value to add. * @template K,V */ function set<V>(obj: { [key: string]: V }, key: string, value: V): void; function set<V>(obj: { [key: number]: V }, key: number, value: V): void; /** * Adds a key-value pair to the object/map/hash if it doesn't exist yet. * * @param {Object.<K,V>} obj The object to which to add the key-value pair. * @param {string} key The key to add. * @param {V} value The value to add if the key wasn't present. * @return {V} The value of the entry at the end of the function. * @template K,V */ function setIfUndefined<V>(obj: { [key: string]: V }, key: string, value: V): V; function setIfUndefined<V>(obj: { [key: number]: V }, key: number, value: V): V; /** * Does a flat clone of the object. * * @param {Object.<K,V>} obj Object to clone. * @return {!Object.<K,V>} Clone of the input object. * @template K,V */ function clone<V>(obj: { [key: string]: V }): { [key: string]: V }; function clone<V>(obj: { [key: number]: V }): { [key: number]: V }; /** * Clones a value. The input may be an Object, Array, or basic type. Objects and * arrays will be cloned recursively. * * WARNINGS: * <code>goog.object.unsafeClone</code> does not detect reference loops. Objects * that refer to themselves will cause infinite recursion. * * <code>goog.object.unsafeClone</code> is unaware of unique identifiers, and * copies UIDs created by <code>getUid</code> into cloned results. * * @param {*} obj The value to clone. * @return {*} A clone of the input value. */ function unsafeClone(obj: any): any; /** * Returns a new object in which all the keys and values are interchanged * (keys become values and values become keys). If multiple keys map to the * same value, the chosen transposed value is implementation-dependent. * * @param {Object} obj The object to transpose. * @return {!Object} The transposed object. */ function transpose(obj: Object): Object; /** * Extends an object with another object. * This operates 'in-place'; it does not create a new Object. * * Example: * var o = {}; * goog.object.extend(o, {a: 0, b: 1}); * o; // {a: 0, b: 1} * goog.object.extend(o, {b: 2, c: 3}); * o; // {a: 0, b: 2, c: 3} * * @param {Object} target The object to modify. Existing properties will be * overwritten if they are also present in one of the objects in * {@code var_args}. * @param {...Object} var_args The objects from which values will be copied. */ function extend(target: Object, ...var_args: Object[]): void; /** * Creates a new object built from the key-value pairs provided as arguments. * @param {...*} var_args If only one argument is provided and it is an array * then this is used as the arguments, otherwise even arguments are used as * the property names and odd arguments are used as the property values. * @return {!Object} The new object. * @throws {Error} If there are uneven number of arguments or there is only one * non array argument. */ function create(...var_args: any[]): Object; /** * Creates a new object where the property names come from the arguments but * the value is always set to true * @param {...*} var_args If only one argument is provided and it is an array * then this is used as the arguments, otherwise the arguments are used * as the property names. * @return {!Object} The new object. */ function createSet(...var_args: any[]): Object; /** * Creates an immutable view of the underlying object, if the browser * supports immutable objects. * * In default mode, writes to this view will fail silently. In strict mode, * they will throw an error. * * @param {!Object.<K,V>} obj An object. * @return {!Object.<K,V>} An immutable view of that object, or the * original object if this browser does not support immutables. * @template K,V */ function createImmutableView<V>(obj: { [key: string]: V }): { [key: string]: V }; function createImmutableView<V>(obj: { [key: number]: V }): { [key: number]: V }; /** * @param {!Object} obj An object. * @return {boolean} Whether this is an immutable view of the object. */ function isImmutableView(obj: Object): boolean; }