@feugene/mu
Version:
Helpful TS utilities without dependencies
33 lines (31 loc) • 846 B
text/typescript
import isArrayLike from '~/is/isArrayLike'
import arrayLikeKeys from '~/internal/arrayLikeKeys'
import baseKeys from '~/internal/base/baseKeys'
/**
* Creates an array of the own enumerable property names of `object`.
*
* **Note:** Non-object values are coerced to objects. See the
* [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
* for more details.
*
* @static
* @param {Object} object The object to query.
* @returns {Array} Returns the array of property names.
* @example
*
* function Foo() {
* this.a = 1;
* this.b = 2;
* }
*
* Foo.prototype.c = 3;
*
* keys(new Foo);
* // => ['a', 'b'] (iteration order is not guaranteed)
*
* keys('hi');
* // => ['0', '1']
*/
export default function keys(object: any): string[] {
return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object)
}