Babel 6 and Flow Annotations
13 March 2016
In Flow, a class may be defined using ES6 syntax extended with field declarations.
— http://flowtype.org/docs/classes.html
In Babel 5, this worked with the default configuration:
/* @flow */
class C {
s : string;
constructor(s) {
this.s = s;
}
split() {
return this.s.split('');
}
}
The s : string;
line is required by Flow; without it Flow will complain:
src/flow-test.js:5
5: this.s = s;
^^^^^^ assignment of property `s`
5: this.s = s;
^ property `s`. Property not found in
2: class C {
^ C
In Babel 6, most Flow annotations continue to work as expected, but this class annotation now causes an error:
SyntaxError: src/flow-test.js: Missing class properties transform.
1 | class C {
> 2 | s : string;
| ^
The class properties transform the error is referring to is transform-class-properties, for “Class Property Declarations”, currently a stage 1 proposal.
Flow doesn’t depend on future ECMA262 proposals, so this seems like a mistake.