0.3.0 • Published 8 years ago
ts-object v0.3.0
Utility methods for working with plain js objects in TypeScript just like with arrays.
All functions can be used in two ways:
- By passing all parameters, then TypeScript can correctly detect all types
- By leaving last parameter for point free style programming. In many cases TypeScript can't correctly detect types and explicit generic parameters are required but it should work with
pipemethod
Installation
npm i ts-objectUsage
import {
map,
filter,
reduce,
some,
every,
mapToArray,
keys,
values,
} from "ts-object"
const obj = {
a: 1,
b: 2,
c: 3,
}
const mappedObj = map((v, k) => (k === "b" ? v * 3 : v * 2), obj)
const mappedObj = map<typeof obj, number>(
(v, k) => (k === "b" ? v * 3 : v * 2),
)(obj)
const filteredObj = filter((v, k) => v > 1 && k > "b", obj)
const filteredObj = filter<typeof obj>((v, k) => v > 1 && k > "b")(obj)
const reducedObj = reduce(
(acc, v, k) => [...acc, { v, k }],
[] as Array<{ v: number; k: string }>,
obj,
)
const reducedObj = reduce<
typeof obj,
Array<{
v: number
k: string
}>
>((acc, v, k) => [...acc, { v, k }], [])(obj)
const any = some((v, k) => v === 2 && k === "b", obj)
const any = some<typeof obj>((v, k) => v === 2 && k === "b")(obj)
const all = every((v, _k) => v > 0, obj)
const all = every<typeof obj>((v, _k) => v > 0)(obj)
const arr = mapToArray((v, k) => ({ v, k }), obj)
const arr = mapToArray<typeof obj, { k: string; v: number }>((v, k) => ({
v,
k,
}))(obj)
const keys = keys(obj)
const values = values(obj)
const arr = [{ v: 1, k: "a" }, { v: 2, k: "b" }, { v: 3, k: "c" }]
const obj = fromArray((x) => x.k, (x) => x.v, arr)
const obj = fromArray<typeof arr[0], number>((x) => x.k, (x) => x.v)(arr)