tsObject
ts-object is a forked project from aobj and is an object manipulation module for TypeScript
Setup
Install in your project using npm
npm install ts-object
Require in your file as
;
Methods
extract
extract(obj: Object, keys: Array<String>) :Object
Extract keys/value into a new Object
const person = name: 'Donald' lastname: 'Trump' favorite_color: 'red' tsObject// {name: 'Donald', lastname: 'Trump'}
has
has(obj: Object, keys: Array<String>) :Boolean
Check if an Object has certain keys
const person = name: 'Donald' lastname: 'Trump' favorite_color: 'red' tsObject // truetsObject // truetsObject // false
clone
clone(obj: Object) :Object
Deep Clones an Object
Without Cloning
const person = name: 'Donald' lastname: 'Trump' favorite_color: 'red' const samePerson = person;samePersonname = 'Mike'; samePersonname; // 'Mike'personname; // 'Mike'
With Deep Cloning
const person = name: 'Donald' lastname: 'Trump' favorite_color: 'red' const anotherPerson = tsObject;anotherPersonname = 'Mike'; anotherPersonname; // 'Mike'personname; // 'Donald'
isEmpty
isEmpty(obj: Object) :Boolean
Check if an Object is empty
const person = name: 'Donald' lastname: 'Trump' favorite_color: 'red' tsObject // true tsObject // false
isObject
isObject(obj: Object) :Boolean
Check if a variable is an Object
const person = name: 'Donald' lastname: 'Trump' favorite_color: 'red' tsObject // truetsObject // true tsObject // falsetsObject // falsetsObject // falsetsObject // false
map
map(obj: Object, action: (key: String, value: any) => { key: String; value: any; })) :Object
Like Array.map for Objects (For deep objects use traverse)
const person = name: 'Donald' age: 10 const newPerson = tsObject; console;/*{ name: 'Donald', birthyear: 2010}*/
mapKeys
mapKeys(obj: Object, action: (key: String) => key: String)) :Object
Like Array.map for Objects Keys (For deep objects use traverseKeys)
const person = name: 'Donald' age: 10 const newPerson = tsObject; console;/*{ fullname: 'Donald', birthyear: 2010}*/
mapValues
mapValues(obj: Object, action: (value: any) => value: any)) :Object
Like Array.map for Objects Values (For deep objects use traverse)
const person = name: 'Donald' age: 10 const newPerson = tsObject; console;/*{ name: 'Donald', age: 60}*/
traverse
traverse(obj: Object, action: (key: String, value: any) => { key: String; value: any; })) :Object
Like map but for deeply nested objects
const house = rooms: dinner_room: m2: 30 chairs: oldChair: m2: 02 age: 5 bedroom: m2: 30 gamerChair: m2: 023 age: 1 const newPerson = tsObject; console;/*{ rooms: { dinner_room: { m2: 30, chairs: { oldChair: { m2: 0.2, year: 2015 } } }, bedroom: { m2: 30, gamerChair: { m2: 0.23, year: 2019 } } }}*/
traverseKeys
traverseKeys(obj: Object, action: (key: String) => key: String)) :Object
Like map but for deeply nested objects
const house = rooms: a: m2: 120 b: m2: 112 c: m2: 117 const newPerson = tsObject; console;/*{ rooms: { Biggest_room: { m2: 120 }, Small_room: { m2: 112 }, Medium_room: { m2: 117 } }}*/
traverseValues
traverseValues(obj: Object, action: (value: String) => value: String)) :Object
Like map but for deeply nested objects
const house = rooms: a: m2: 120 b: m2: 112 c: m2: 117 const newPerson = tsObject; console;/*{ rooms: { a: { m2: 220 }, b: { m2: 212 }, c: { m2: 217 } }}*/
TODO:
Tests for:
- deepFilter
- deepFilterKeys
- deepFilterValues
- filter
- filterKeys
- filterValues
Examples for:
- deepFilter
- deepFilterKeys
- deepFilterValues
- filter
- filterKeys
- filterValues
- invert
- extractDefault