Safely get deep nested properties using dot notation
npm install dot-path-valueSafely get and set deep nested properties using dot notation.
- TypeScript first 🤙
- Support arrays
- Tiny
- No dependencies
- Utility types Path and PathValue
If you find this library useful, why not
``bash`using npm
npm install dot-path-valueusing pnpm
pnpm install dot-path-valueusing yarn
yarn add dot-path-value
`ts
import { getByPath, setByPath } from 'dot-path-value';
const obj = {
a: {
b: 'hello',
d: [
{
e: 'world',
}
],
},
};
// access through object
getByPath(obj, 'a.b'); // outputs 'hello' with type string
// access through array
getByPath(obj, 'a.d.0.e'); // outputs 'world' with type string{ e: string }
getByPath(obj, 'a.d.0'); // outputs '{ e: 'world' }' with type
// also you can pass array as first argument
getByPath([{ a: 1 }], '0.a'); // outputs '1' with type number
// typescript errors
getByPath(obj, 'a.b.c'); // c property does not exist
// set a property through an object
setByPath(obj, 'a.b', 'hello there');
`
dot-path-value exports a few types to ensure the type safety:
| Type | Description |
| --------------------- | ----------------------------------------------------------------------------------------- |
| Path | converts nested structure T into a string representation of the paths to its properties |PathValue
| | returns the type of the value at the specified path |
`ts
import { Path, PathValue } from 'dot-path-value';
const obj = {
a: {
b: 'hello',
d: [
{
e: 'world',
}
],
},
};
type Foo = Path | a.d.${number}.e``
type Bar = PathValue