[Proposal] Refer to actual value : keyword "itself"
You could currently do
object.child.property /= 5
with destructuring:
const {child: {subchild}, child} = state;
return {
...state,
child: {
...child,
subchild: {
...subchild,
property: subchild.property + 1
}
}
}
or do-expressions:
return {
...state,
child: do {
const {child} = state;
return {
...child,
subchild: do {
const {subchild} = child;
return {
...subchild,
property: subchild.property + 1
};
}
};
}
}
note: your property: itself + 1
looks incorrect, since you probably mean
to increment the property
property
Oops I forgot do-expression don't use return
, so something, a bit ugly,
like:
return {
...state,
child: do {
const {child} = state;
({
...child,
subchild: do {
const {subchild} = child;
({
...subchild,
property: subchild.property + 1
});
}
});
}
}
Yes of course I could use the /= operator in this simple example, but not in more complex operations.
About itself in a property, it's correct : I mean itself to refer to the actual value, the value being from a variable or an object property doesn't matter. itself would not be a this equivalent, so whenever itself is used it refers to the actual value we are assigning
On 6. 9. 2019 10:34, Cyril Auburtin wrote:
You could currently do
object.child.property /= 5
with destructuring:
const {child: {subchild}, child} = state;
Wow, I didn't know I can do that. Nice.
also optional-chaining will help
return {
...state,
child: {
...state?.child,
subchild: {
...state?.child?.subchild,
property: (state?.child?.subchild?.property ?? 0) + 1
}
}
}
@Herby yes that's interesting, works in any order actually const {child, child: {subchild}} = state;
var itself = 3;
means that your choice of keyword wouldn't be an option;
you'd be limited to something that was currently a syntax error.
Can you currently do this with the "super" keyword outside of classes?
When we need to change a value using the old value :
variable = itself + 5 // instead of variable = variable + 5
object.child.property = itself / 5 // instead of object.child.property = object.child.property / 5
Changing a value in nested objects is a pain, like Redux states for eg.
return { ...state, child: { ...state.child, subchild: { ...state.child.subchild, property: state.child.subchild.property + 1 } } }
would then be
return { ...state, child: { ...itself, subchild: { ...itself, property: itself + 1 } } }