The distinction between ({ note, onDelete }) and (note, onDelete)
2024
The distinction between ({ note, onDelete })
and (note, onDelete)
is applicable to both JavaScript and TypeScript.
Key Difference:
({ note, onDelete })
: This is destructuring from an object. You are saying that the function expects a single argument (an object) with propertiesnote
andonDelete
. The function extracts those specific properties directly from the passed object.(note, onDelete)
: This assumes the function is expecting two separate arguments,note
andonDelete
, passed individually.
JavaScript Example:
Destructuring (({ note, onDelete })
)
const Note = ({ note, onDelete }) => {
console.log(note, onDelete); // note and onDelete are extracted from the props object
}
Note({ note: "Example note", onDelete: () => {} });
Here, Note
expects a single object as its parameter, and then destructures the note
and onDelete
properties from that object. This is the typical pattern when using React components, where props
is an object.
Without Destructuring ((note, onDelete)
)
const Note = (note, onDelete) => {
console.log(note, onDelete); // note and onDelete are two separate arguments
}
Note("Example note", () => {});
Here, Note
expects two separate arguments passed directly.
Why Use Destructuring in React?
React components generally receive their properties (or “props”) as a single object. When you write:
const Note = (props) => {
const { note, onDelete } = props;
// Do something with note and onDelete
}
You’re passing a single props
object. Instead of manually extracting properties from props
, destructuring in the function signature:
const Note = ({ note, onDelete }) => {
// Now you can use note and onDelete directly
}
is more concise and common in React.
Applicability:
- In JavaScript: The destructuring syntax (
({ note, onDelete })
) works just as well and is commonly used in modern JavaScript, especially in frameworks like React. - In TypeScript: The same destructuring applies, but TypeScript adds the ability to enforce type safety (e.g., making sure
note
andonDelete
are the expected types).
Summary:
- Both JavaScript and TypeScript support destructuring.
- In React, destructuring is the common way to access props because it simplifies code and reduces redundancy.
- If you use
(note, onDelete)
, your function is expecting two separate arguments, not an object with those properties.