August 14th, 2023 × #javascript#webdev#decorators
JS Fundamentals - Decorators
Scott and Wes discuss JavaScript decorators - what they are, how to use them, their current status, and potential future use cases.
![Wes Bos](https://github.com/wesbos.png)
Wes Bos Host
![Scott Tolinski](https://github.com/stolinski.png)
Scott Tolinski Host
In this Hasty Treat, Scott and Wes talk about whether decorators are finally here, what the uses cases are for decorators, how to define a decorator, and what auto accessor is.
Show Notes
- 00:25 Welcome
- 01:00 Are decorators finally here?
- TC39 proposal
- How this compares to other versions of decorators
- 06:47 What are use cases for decorators?
- 10:55 How do you define a decorator?
- 14:20 Auto Accessor
on classes
@loggged
class C {}
on fields
class C {
@logged x = 1;
}
Auto Accessor
class C {
accessor x = 1;
}
sugar for below
class C {
#x = 1; // # means private
get x() {
return this.#x;
}
set x(val) {
this.#x = val;
}
}
Can be decorated and decorator can return new get and set and init functions
function logged(value, { kind, name }) {
if (kind === "accessor") {
let { get, set } = value;
return {
get() {
console.log(`getting ${name}`);
return get.call(this);
},
set(val) {
console.log(`setting ${name} to ${val}`);
return set.call(this, val);
},
init(initialValue) {
console.log(`initializing ${name} with value ${initialValue}`);
return initialValue;
}
};
}
// ...
}
Tweet us your tasty treats
- Scott's Instagram
- LevelUpTutorials Instagram
- Wes' Instagram
- Wes' Twitter
- Wes' Facebook
- Scott's Twitter
- Make sure to include @SyntaxFM in your tweets
- Wes Bos on Bluesky
- Scott on Bluesky
- Syntax on Bluesky