1.4 KiB
Notes about ES6 Class Syntax
Document Meta
backend focus: This documentation is more relevant to Puter's backend than frontend, but is placed here because it could apply to other areas in the future.
Expressions as Methods
One important shortcoming in the ES6 class syntax to be aware of is that it discourages the use of expressions as methods.
For example:
class ExampleClass extends SomeBase {
intuitive_method_definition () {}
constructor () {
this.less_intuitive = some_expr();
}
}
Even if it is known that the return type of some_expr
is a function,
it is still unclear whether it's being used as a callback or
as a method without other context in the code, since this is
how we typically assign instance members rather than methods.
We solve this in Puter's backend using a trait called
AssignableMethodsTrait
which allows a static member called METHODS
to contain
method definitions.
Uses for Expressions as Methods
Method Composition
Method Composition is the act of composing methods from other constituents. For example, Sequence allows composing a method from smaller functions, allowing easier definition of "in-betwewen-each" behaviors and ways to track which values from the arguments are actually read during a particular call.