https://github.com/thejoin95/proposal-nullcheck-object-destructuring
Null check in object destructuring
https://github.com/thejoin95/proposal-nullcheck-object-destructuring
Last synced: 4 months ago
JSON representation
Null check in object destructuring
- Host: GitHub
- URL: https://github.com/thejoin95/proposal-nullcheck-object-destructuring
- Owner: TheJoin95
- License: mit
- Created: 2023-04-07T13:47:31.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2023-04-07T16:56:20.000Z (about 3 years ago)
- Last Synced: 2025-08-23T05:03:09.936Z (11 months ago)
- Language: HTML
- Homepage: https://www.mikilombardi.com/proposal-nullcheck-object-destructuring/
- Size: 5.86 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Proposal of null check object destructuring
Proposal to add the null check in objct destructuring syntax
## Status
State: -1
Author: @thejoin95 ([@thejoin95](https://twitter.com/thejoin95))
Champion: need one
## Motivation
Object destructuring is well use by the javascript developers. The default value in case of an undefined prop is useful and I think it could be even better if we are going to implement it as well with the null check, especially for a nested object in order to avoid null check errors.
## Use cases & description
Imagine to have an object with n depth level, e.g. a react state/context with differents properties containing n-depth objects.
In some scenario you want to destructure few properties at the first level and in other case also some more specific in-depth props.
```
const state = {
navbar: {
profileMenu: {
username: 'jhondoe',
...
}
},
footer: {
brand: {
title: 'brand one',
...
}
},
...
}
const {
navbar: {
profileMenu: {
username: ProfileMenuUsername
}
}
} = state;
```
Let's say that, the properties are going to be valorised but some of them would have a `null` value:
```
{
navbar: {
profileMenu: null,
},
footer: {
brand: {
title: 'brand one',
...
}
},
...
}
const {
navbar: {
profileMenu: {
username: ProfileMenuUsername
}
}
} = state; // this will break because there is no valid username prop in null
```
When a nested property is undefined, we could assign the default value, defined in the object destructuring syntax:
```
const {
navbar: {
profileMenu: {
username: ProfileMenuUsername
} = { username: null }
} = { profileMenu: { username: null } }
} = state;
```
It would be great to have a syntax to indicate whenever a property could be nullable by adding a short circuit instead of throwing an error by reusing the `.?`, such like:
```
const {
navbar: {
profileMenu?: {
username: ProfileMenuUsername
} = { username: null }
} = { profileMenu: { username: null } }
} = state;
```
## Comparison
These npm modules do something like the proposal:
- [lodash.get](https://lodash.com/docs/#get)
Even though is a different approach, would say old style, and I believe it should implemented directly on the destructure syntax.
## Q&A
In progress