dot-path-value
v0.0.11
Published
Safely get deep nested properties using dot notation
Downloads
22,211
Maintainers
Readme
dot-path-value
Safely get and set deep nested properties using dot notation.
Features
- TypeScript first 🤙
- Support arrays
- Tiny
- No dependencies
- Utility types
Path
andPathValue
If you find this library useful, why not
Installation
# using npm
npm install dot-path-value
# using pnpm
pnpm install dot-path-value
# using yarn
yarn add dot-path-value
Usage
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`
getByPath(obj, 'a.d.0'); // outputs '{ e: 'world' }' with type `{ e: string }`
// 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');
Types
dot-path-value
exports a few types to ensure the type safety:
| Type | Description |
| --------------------- | ----------------------------------------------------------------------------------------- |
| Path<T>
| converts nested structure T
into a string representation of the paths to its properties |
| PathValue<T, TPath>
| returns the type of the value at the specified path |
Types usage
import { Path, PathValue } from 'dot-path-value';
const obj = {
a: {
b: 'hello',
d: [
{
e: 'world',
}
],
},
};
type Foo = Path<typeof obj>; // 'a.d' | 'a' | 'a.b' | `a.d.${number}` | `a.d.${number}.e`
type Bar = PathValue<typeof obj, 'a.b'>; // 'string'