Repository navigation
Releases: meta/flow
Release list
v0.338.0
Breaking Changes:
- Flowconfig option
experimental.assertion_functionsis removed. Assertion functions have been on by default and the option only acceptedtruesince 0.337. - Flowconfig option
experimental.disable_invariant_special_casingis removed. It has been on by default and only acceptedtruesince 0.337. - Flowconfig option
experimental.function_and_object_type_is_no_longer_anyis removed. It has been on by default and only acceptedtruefor a while. - Flowconfig option
experimental.builtin_ts_libdef_dynamic_discoveryis removed. It has been on by default and only acceptedtrue. - Flowconfig option
experimental.declare_global_supportis removed. It has been on by default and only acceptedtrue.
Likely to cause new Flow errors:
Readonly,Partial,Required,$Exact,Omitand mapped types over an interface now include its methods and the members it inherits.- Type guards now refine
Array<any>,{data: any},Map<string, any>and similar types to the guarded type, e.g.Array<string>, which can surface errors in code that relied onany. - Static members can no longer reference the type parameters of their class, like in TypeScript, and reading a static member of a generic class no longer infers them.
keyofof an object with a template literal indexer no longer widens the indexer key tostringin conditional types likeExclude.
New Features:
- Mapped types over arrays and tuples support
readonlyandwriteonlymodifiers. - Property truthiness checks such as
if (result.done)now refine unions of classes and interfaces by fields with literal types, as===checks already did. - Type guards narrow through optional calls such as
isString?.(x). When the callee or receiver is nullable, only the true branch narrows. - Support optional assertion calls when their declared types guarantee the call runs.
- Added the intrinsic
ExactObjectType, the supertype of every exact object type and a subtype of{...}.
Notable bug fixes:
- Fix crashes and false recursive-definition errors from cyclic type star exports in TypeScript declarations.
- Support namespace export aliases and ambient exported members in TypeScript definitions.
- Allow classes to extend a constructor whose overloads are not all generic, such as
Uint8Array<ArrayBuffer>. - Casting a value whose type intersects an enum with other types (e.g.
E & E) to the enum's representation type no longer errors. - Arrays can be assigned to variables and parameters whose type was inferred from
new Array<T>(...). - Report delegated yield type errors at the yield expression.
- Align Try Flow's default lints and
declare globalsupport with regular Flow. - Improve inference for generic values passed to polymorphic operations.
- Fix Try Flow initialization after the async builtin migration while preserving older releases' library definitions.
- Report conditional type instantiation errors at the caller.
- Apply type-parameter defaults when omitted optional or nullable arguments are the only evidence for them.
- An object with an indexer is no longer checked against optional properties it doesn't declare of a TypeScript-declared (
.d.ts) object type, matching TypeScript. - Fewer
underconstrained-implicit-instantiationerrors for generic calls passed as arguments to other generic calls. - Fixed a crash when printing long types that contain non-ASCII names in error messages.
- Tuple types with a spread keep the variance of their own elements, e.g.
ain[readonly a: unknown, ...T]stays read-only. Firstin[infer First, ...infer Rest]is now inferred instead ofunknown.- Fixed a deadlock in the Flow server monitor that could make all subsequent commands fail with "Out of retries, exiting!".
- Type guards with a union type now refine union members precisely, e.g. a falsy-value guard on
string | numberrefines to"" | 0. - Type guards now drop union members that are instances of classes unrelated to the guarded class, e.g.
x: A | Brefined byx is Ais nowArather thanA | (A & B). - The negative branch of a type guard now refines away generics that satisfy the guard, e.g.
x: T | numberrefined by!isT(x)withisT: (x: unknown) => x is Tis nownumber. - In the negative branch of a type guard,
anynow staysanyinstead of becomingempty, andbooleanis refined to the literal the guard does not cover. - Correct stdin behavior for
flow check-contentsandflow autocomplete. - Error messages print code that contains backticks, such as template literals, as markdown code spans.
- Instances of TypeScript-declared generics, such as
React.MouseEvent<T>, now compare type parameters without a variance annotation covariantly, as type applications already did. - Type guards now drop tuple members of a different length and array members with disjoint element types.
- Type guards now drop object and interface union members whose properties conflict with the guard type.
x instanceof Cno longer refines a value of an intersection type toempty.- Linux release builds use jemalloc, which keeps the memory of long-running servers from growing after large rechecks.
- Fixed a race that could leave a file unmerged after a recheck, which made the server recheck forever while an open file imported it.
Misc:
- Print rest arrays as array types in errors.
- Print receiver and merged declaration types in errors.
- Simplify missing this annotation diagnostics.
- Print both types in inheritance errors.
- Identify missing parameter annotations directly at the parameter location.
- Remove empty filename metadata from the Try Flow AST display.
- Add a default-on option to hide locations in the Try Flow AST pane.
- Show node types first in the Try Flow AST pane.
- Add a default-on option to hide null and undefined fields in the Try Flow AST pane.
- Move Try Flow's JSON error output into an Errors format pill bar.
- Add JSON AST output to Try Flow.
Parser:
- Accept explicit semicolons on shorthand ambient modules.
- Accept keyword members in qualified type names and import types.
- Allow repeated inline interface exports in TypeScript files.
- Fixed
flow-parsertaking minutes to parse JS files over ~1 MB. - Support destructured rest parameters in function type signatures.
- Support import attributes on re-export declarations.
- Preserve TypeScript accessibility modifiers on bodyless class method signatures.
- Preserve computed type-literal keys as properties in TypeScript source files.
- Allow newline-separated type members in TypeScript source files.
- Use
"in out"for the ESTree variance kind ofin outtype parameters. - Parse postfix non-null assertions with type syntax enabled, preserve ASI, and emit TypeScript-compatible
NonNullExpressionnodes. - Respect JavaScript line terminators and Unicode whitespace when recovering source locations.
- Parse default interface exports and report unsupported syntax during type checking.
- Correct inferred ESTree source type for default interfaces, inline type specifiers, and exported import aliases.
- Exclude default interface exports and all-type specifier lists from inferred Babel module source type.
- Support top-level await for explicit modules and
.mjs/.mtsfiles in flow-parser. - Always enable type parsing for TypeScript filenames.
- Reject type syntax in untyped parser mode and report precise diagnostics.
- Fix declaration method signature locations to include the complete signature.
- Include the
constkeyword in const enum declaration locations.
IDE:
- Hover and error messages no longer print redundant parentheses around function types in maybe types, e.g.
?() => voidinstead of?(() => void).
Library Definitions:
- Align well-known symbol members (
Symbol.toStringTag,Symbol.match,Symbol.toPrimitive, ...) with TypeScript. MapandWeakMapset, andSetandWeakSetadd, now returnthis.RegExpflags/sticky/unicodeandNumber.EPSILON/MAX_SAFE_INTEGER/MIN_SAFE_INTEGERare now read-only;String.prototype.normalizeaccepts the normalization form literals and the legacy HTML methods (bold,link, ...) are declared.Array.prototype.copyWithinreturnsthis, so subclasses ofArraykeep their type.Array.prototype.sortreturnsthis, so subclasses ofArraykeep their type.Mathconstants (Math.PI,Math.E, ...) are read-only.Number.MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITYandPOSITIVE_INFINITYare read-only.String#splitrequires a separator,String#replacehas separate overloads for a string and a function replacement, andString#lengthis read-only, as in TypeScript.- Use TypeScript's ES2018 async iterator and iterable definitions.
- Use TypeScript's ES2018 async generator definitions.
- Use TypeScript's ES2019 array definitions while preserving Flow's existing
flatMapunion order and inference. - Use TypeScript's ES2020 promise definitions, including mutable settled results.
- Use TypeScript's ES2016 array
includesdefinitions while keeping Flow's element refinement. - Use TypeScript's ES2015 generator definitions.
Generator.prototype.returnnow requires a value of the generator's return type. - Add
React.CSSProperties, typed bycsstype. - Use TypeScript's ES2015 promise definitions, adapted to Flow's inference.
- Use TypeScript's ESNext set method definitions, including
Set.prototype.union. - Use TypeScript's ES2015
Map,Set,WeakMapandWeakSetdefinitions.sizeis now read-only. doneis now optional in the non-final branch ofIteratorResult, as in TypeScript.- Use TypeScript's ES2015 iterable definitions.
ArrayIterator,MapIterator,SetIteratorandStringIteratorare now interfaces, andStringIteratortakes a type argument. - Add React's DOM types from
@types/react, such asReact.MouseEvent,React.HTMLAttributesandReact.JSX.IntrinsicElements. React.ComponentPropsof a string that is...
v0.337.0
Likely to cause new Flow errors:
Function.prototype.bindis now typed with TypeScript'sCallableFunction.bindoverloads, so errors in bound arguments are reported atbind, and a bound function's remaining parameters are a tuple type.FunctionandObjectno longer meananyand no longer triggerunclear-typeerrors. They are now interpreted as the prototypes of functions and objects. Code that assumed they meantanymay get new errors.- Internal type
Function$Prototype$Bindis removed. - Class method
bindnow uses the declaredFunction.prototype.bindoverloads. Bound methods may now report tuple arity errors when used as callbacks that ignore extra arguments or omit nullable parameters, because their inferred parameters are represented as tuple rest parameters.
New Features:
- Support assertion functions. If you relied on Flow's special handling of
invariant, give it anassertssignature. - Execute runtime Flow syntax in CommonJS and ES modules with original stack locations through
flow-node. - Support assertion narrowing through
thisandsuper, including receiver assertions. Readonlynow supportsArrayandReadonlyArraytypes.
Notable bug fixes:
- Honor opaque upper bounds in template interpolation and nullable subtyping.
- Preserve nominal opaque inference when checking nullable targets.
- Fixed spurious
Recursion limit exceedederrors when checking conditions,matchand other expressions whose type is a trivially recursive generic type alias. - Prevent unsound assertion narrowing when annotations refer to shadowed local declarations.
- Qualified type references through a union of namespaces (e.g.
(cond ? A : B).Tvia a local) now look up the type in each namespace instead of reporting it as missing. - Prevent saved-state startup and incremental match checking from crashing when a recheck is canceled.
Misc:
- Document assertion functions.
Parser:
- Add missing AST fields and node types to the Flow parser output.
implicitDeclareis now omitted unlesstrue. - Emit
TypeParameter.boundas a bare type node ornullin ESTree output. Babel output retains theTypeAnnotationwrapper, and the TypeScript-to-Flow API translator generatesextendsbounds. - ESTree enum declarations now use a unified
EnumBodynode with string-or-nullexplicitType. Babel output retains its existing enum body types. - Parse typed function overload signatures in TypeScript implementation files.
- Parse destructured parameters in TypeScript function types outside declaration files.
- Parse optional class method signatures in JavaScript and TypeScript files.
- Parse optional TypeScript constructor parameter properties.
- Parse namespace export aliases and ambient exported members in TypeScript definitions.
- Fix parsing of class modifiers before synchronous generator methods.
- Support
readonly T[]in unlabeled tuple elements and require parentheses when optional.
Library Definitions:
- Add
Intl.SegmenterandIntl.supportedValuesOf. - Add
Intl.NumberFormat.prototype.formatRangeandformatRangeToParts, and the ES2023NumberFormatoptions;formatacceptsbigintand numeric strings. String.prototype.localeCompare,toLocaleLowerCaseandtoLocaleUpperCaseacceptIntl.LocalesArgument;matchAllwith aRegExpreturnsRegExpExecArraymatches.Float16Array.prototype.toLocaleStringtakesIntl.NumberFormatOptions.- Add ES2024
ArrayBufferresizing, transfer, and constructor options. - Align
ReflectAPIs with TypeScript property, descriptor, key, and constructor definitions. - Reuse TypeScript's
Float16Arraydeclarations while preserving Flow covariance and callback compatibility. - Align
ProxyAPIs with TypeScript and check array elements against numeric interface indexers.
v0.336.0
Likely to cause new Flow errors:
- Calls such as
Array.fromcan now infer narrower literal types, requiring explicit annotations where broader types are needed. Unconstrained class type arguments now use their bounds instead ofempty. - Flow now checks
refcompatibility for JSX tags typed asstring, exposing refs that assume a more specific element type. - Explicit
thisparameters on methods in library definitions no longer need to accept the instance type. - Generic rest-parameter inference can now expose previously hidden parameter-type errors. For example,
(input: string, ...args: Array<unknown>) => voidno longer satisfies(...args: TArgs) => RwhenTArgsis inferred asArray<unknown>(Try Flow example). - Rest destructuring of exact tuples, e.g.
const [first, ...rest] = t, now excludes preceding elements' types fromrest. - Variance annotations are now checked through tuple type spreads, so
type T<out X> = [string, ...[X]]is an error.
New Features:
- Support tuple types with trailing rest elements, e.g.
[string, ...Array<number>]. Array literals ending in array spreads and arguments collected by rest parameters can flow to these types.
Notable bug fixes:
- Declaration merging for interfaces and
declare classnow preserves variance annotations. - Returns inside functions nested in a type guard function are no longer checked against the enclosing type guard.
- References inside
declare namespaceblocks now see members merged across blocks and library files. - Functions and constructors are now accepted as builtin
FunctionandObjectvalues. - Fixed spurious indexed-access errors involving recursive class type-argument bounds.
- Type arguments used in later tuple spreads, e.g.
Bin[...A, ...B], are now inferred instead of left underconstrained. - Conditional types using
inferon rest parameters now preserve the matched function's optional parameters and rest element in the inferred tuple, e.g.[number, ...Array<boolean>]. Matching functions with fewer parameters than the pattern and no rest parameter no longer produces underconstrained errors.
Misc:
flow-upgradenow uses Flow parser packages and requires Node 18 and Prettier 3.
Parser:
- Correct JavaScript source columns after characters represented by surrogate pairs.
IDE:
- Hover
Go tolinks no longer include the hovered declaration itself.
Library Definitions:
Intlis now a builtin namespace with TypeScript-compatible definitions through ES2020, includingCollator,NumberFormat,DateTimeFormat,PluralRules,RelativeTimeFormat,Locale,DisplayNames,getCanonicalLocales, andformatToPartsfor dates and numbers.- The legacy
Intl$CollatorOptions,Intl$DateTimeFormatOptions, andIntl$NumberFormatOptionsaliases now match TypeScript.Intl.DateTimeFormatPartTypesincludes'unknown', and locale-awareDatemethods acceptIntl.LocalesArgumentandIntl.DateTimeFormatOptions. - The global
LocalesArgumenttype is nowIntl.LocalesArgument. Library declarations such as flow-typed'sdeclare var Intlhide the builtin namespace and must be removed. React.ElementConfigis removed; useReact.ComponentPropsinstead.- Typed arrays gain
findLast,findLastIndex,toReversed,toSorted, andwith, and their constructors can be called without arguments. For types other thanFloat16Array,findLastnarrows its result with a type-guard callback. Callbacks tofindLastandfindLastIndexcan no longer annotatethis. Float16Arraynow matches TypeScript's declaration, including itsfromoverloads.length,byteLength, andbyteOffsetare read-only,findandfindIndexpredicates must returnboolean, and callbacks can no longer annotatethis.- Add RegExp indices and flags, well-formed string methods, bigint Atomics,
Error.isError,Promise.try,Atomics.pause, and additional ArrayBuffer and Date constructor signatures. - Add TypeScript signatures for
Array.fromAsync. AggregateError.prototype.errorsis now typedany[], matching TypeScript.- Decorator definitions now match TypeScript:
ClassDecoratoraccepts classes, decorator context and metadata types are available, andFunctionincludes[Symbol.metadata]. - Add
DisposableStack,AsyncDisposableStack,SuppressedError,Disposable, andAsyncDisposable.AsyncGeneratornow extendsAsyncIteratorObjectand includes[Symbol.asyncDispose].
v0.335.0
Breaking Changes:
- Removed the legacy
builtin_lib=flowlibandbuiltin_lib=flowlib-with-lib-dom-d-tsoptions. - Removed the Flow config options
exact_by_default,experimental.always_generalize_jsx,experimental.fast_symlink_resolution,experimental.importable_global_libdefs,experimental.interface_dictionary_typing_fix,experimental.new_this_typing,experimental.opaque_type_new_bound_syntax,saved_state.allow_reinit,saved_state.direct_serialization, andsaved_state.reinit_on_lib_change. These options had been enabled by default and only acceptedtrue.
Likely to cause new Flow errors:
SymbolandPromisenow use TypeScript-style instance and constructor interfaces. Code relying on their previous class typing may see different errors.- Some JSX expressions that were previously considered underconstrained now infer
unknown. - Fixed type argument inference that incorrectly used a bound or
unknown. More underconstrained errors may appear. String.prototype.replaceAllnow has separate overloads for a replacement string and a replacer function, matching TypeScript. Passing a union of these types is an error.RegExpMatchArray.groupsis now optional and cannot benull, andRegExp.prototype.dotAllis read-only, matching TypeScript.new $ReadOnlyArraynow causes an error.Symbol()now only accepts astring | numberdescription, andSymbol.keyForreturnsstring | void, matching TypeScript.- Deprecated syntax now consistently causes errors, including in library definition files.
- Type arguments of a polymorphic value flowing to a non-polymorphic type are now solved, which can surface previously hidden errors.
React.PropsOfnow usesReact.ComponentPropsto find component props. Additional errors may occur.
New Features:
- Support assertion functions exported through CommonJS, assertion calls in return position, and assertion calls in arrow expression bodies.
- The
undefinedtype can be used in library definitions, where it meansvoid. flow-remove-typessupports abstract classes, abstract members, override modifiers,satisfies, optional class fields, and additional type-only imports and exports.- Template literals infer precise types in
constdeclarations and annotated initializers.
Notable bug fixes:
as conston template literals infers template literal types like TypeScript.- Implicit instantiation can infer a type argument through
React.ComponentPropsand other conditional types withinfer. - Interfaces with construct signatures no longer print a spurious
thisparameter in error messages and hovers. this-typed methods inherited from builtins such as typed arrays now return the subclass.- Exported
declare classdeclarations extending builtins such asError,Map,Set, orDatenow inherit the builtin's statics and constructor. - Arguments of
new X(...)are now contextually typed whenXis annotated with thetypeofof a constructor interface value. typeof x === 'function'now refines builtin constructors such asMapandSymbol, and interfaces with call signatures, as functions.- User-defined assertion conditions check member access in test context.
- Recognize ESM default imports of CommonJS assertion functions and callable objects with
assertscall signatures. instanceofanddeclare class ... extendsnow use theprototypeof a constructor interface that has no construct signature, instead of narrowing toemptyor reporting "not inheritable".- Fixed a memory leak in type signature parsing that inflated server memory on large codebases.
- Fixed checking interfaces that extend classes, including object values and multiple generic class supers.
Misc:
React.ElementConfigis deprecated in this version and will be removed in the next version. UseReact.ComponentPropsinstead.- The
unnecessary-invariantlint is renamed tounnecessary-assertion; the old name is still accepted. - Constructor errors and variance check errors now print types instead of descriptions such as "object type", "module", or "exports".
- Unary arithmetic on a maybe-typed operand reports
nullandvoidseparately instead of "null or undefined". - Record type utility errors name the utility (
Partial,Required, or mapped type).
Parser:
- Store abstract property annotations in
typeAnnotationand emitvalue: null.
IDE:
- Hover on flow.org/try now shows types framed as declarations, matching the VS Code extension.
- Autocomplete and go-to-definition on instances of classes extending builtins such as
Map,Set,Error, andDatenow show the builtin's instance members. - JSX attribute autocomplete on a union or intersection of components offers the props of the components the element is checked against.
- Go-to-definition on a JSX attribute of a union or intersection of components uses the props of the components the element is checked against.
- Find-references on a JSX attribute of an intersection of components finds the attributes passed to the branch the element is checked against.
- Qualify
React.ComponentPropsin generated type annotations.
Library Definitions:
React.ComponentProps<'div'>now includes the optional ref prop.- Added
Promise.withResolvers. - The type parameters of
Map.groupByare now ordered<K, T>, matching TypeScript. RegExp.prototype[Symbol.matchAll]is now a method andRegExpStringIteratoran interface, matching TypeScript.
v0.334.0
Likely to cause new Flow errors:
- Improved generic type inference with conditional types. Some places might infer a different type and cause new errors.
Number,String,RegExp,Date, native errors, maps, and sets now use TypeScript-style instance and constructor interfaces, while Math, JSON, and Atomics use named interfaces. Existing code relying on their previous class or object typing may produce new errors.
New Features:
- Allow object type spreads over interfaces and inexact object types.
Notable bug fixes:
- Allow classes to extend generic construct-signature interfaces.
- Generic values re-exported through annotated CommonJS getters retain their polymorphic types.
- Preserve record lowering source locations.
- Preserve match lowering source locations.
Parser:
- Support semicolonless abstract method declarations.
v0.333.0
Likely to cause new Flow errors:
- Imports of
reactmodule will always resolve to Flow's builtin react type definitions. If you use a custom react typing module, you might see errors.
Notable bug fixes:
- Preserve Flow WASM linker settings, including memory growth.
- Correct parser ranges for
unique symboltypes and signed mapped-property variance.
Parser:
- Rename the
ImportTypeESTree field fromargumenttosource. - Preserve computed object type property keys in parser output.
Library Definitions:
- Flow will now include DOM typing from TypeScript's
lib.dom.d.tsby default. If your project is not supposed to run in the browser, you can switch back to the old behavior withbuiltin_lib=core-onlyin flowconfig's[options]section. - Flow's
IterableandArrayLiketype now align with those from TypeScript. You might see errors when your existing code assumes the old typing.
v0.332.0
Breaking Changes:
no_flowliboption is removed. Usebuiltin_lib=flowlib(default) orbuiltin_lib=preludeinstead.
Likely to cause new Flow errors:
- Render types no longer accept exact react element as arguments. See https://flow.org/en/docs/react/render-types/ for supported cases
- Flow will now always infer a react jsx element to be a render type if it's an element of a component-syntax component, or
React.MixedElementotherwise. Legacy code that requires exact react element will see new errors. - Add an option for rejecting dynamic imports in Haste modules.
New Features:
Symbol()andSymbol.for()create aunique symbolwhen they initialize aconst, so symbols can be used as property keys without explicit declarations.
Notable bug fixes:
- Bound error type normalization to prevent excessive memory use
- Release temporary signature-hash graphs after Flow merges.
- Using
import typeofof a generic value without type arguments keeps its polymorphism instead of reporting missing-type-args, andrendersacceptsimport typeofof a generic component.
Parser:
- Parse deferred imports:
import defer * as ns from "m"andimport.defer("m")now set the ESTreephaseproperty to"defer".
IDE:
- Hover on members accessed through
supershows the declaration - Hover on destructuring keys shows the member declaration
- Hover on enum members shows the member declaration
- Hover on signature labels and indexer keys shows the parameter
- Hover on component attribute names shows the prop declaration
- Hover on import/export sources shows the module
- Hover on this-parameters shows the parameter
- Hover on indexed-access literals shows the member
- Hover on polymorphic JSX elements no longer exposes overly precise literal types when no annotation demands that precision
- Hover on a call to an overloaded function reports how many other signatures the function has
- Hover lists the signatures of an overloaded declaration instead of printing their intersection
- Component hovers no longer drop indexer rest props
- Align multiline union members in hover type declarations
- Render hover definition links in a compact Rust-style navigation row.
- Expand rest-prop aliases in top-level component hovers.
Library Definitions:
- React ref callbacks now have a stricter return type
import.metawill no longer haveurlproperty and arbitrary unknown property. To add them back, you can do so through declaration merging (e.g. addinginterface ImportMeta { url: string }to your global library definitions.ArrayLikeandArrayBuffernow follow TypeScript definitions- Stricter typing for
Array(length)andArray(items)
v0.331.0
Likely to cause new Flow errors:
- Fixed unsound subtyping of instances against indexer in interfaces (example).
- Flow will no longer emit
method-unbindingerrors and instead perform stricter this-type checking (example).
IDE:
- Improve the primary type displayed by hover
- Show a single type in
type-at-posand hover - Truncate oversized hover types and their reference lists
Library Definitions:
React.ReactElementnow matches latest type in@types/react. Added missingReact.JSX.Elementthat makes the type in@types/react.
v0.330.0
Likely to cause new Flow errors:
- Flow will now restrict the allowed syntax forms of
.call/apply/bindcalls. Only expressions of the form<expr>.m.call(<expr>, ...),<expr>.m.apply(<expr>, ...)and<expr>.m.bind(<expr>, ...)are allowed. [untyped]section of flowconfig will use the glob system. See https://flow.org/en/docs/config/untyped/
Notable bug fixes:
v0.329.0
Likely to cause new Flow errors:
- More subtyping errors will print the types that are incompatible. Some errors might have new locations.
- A
unique symbolannotation is now an error unless it is the type of aconstvariable, of areadonlyobject type or interface property, or of astatic readonlyclass field. - Flow will error on legacy variance syntax in library definition files
New Features:
- We have released
flow-parserandflow-eslintpackages that are drop-in replacement forhermes-parserandhermes-eslint. Babel docs and ESLint docs have been updated. - Object properties, class fields, methods, and the members of an interface or
declare classimported from another module, can be keyed by aunique symbol.
Notable bug fixes:
- Prevent a race that can leave server hanging
- Support TypeScript constructor objects in Flow class positions.
keyofover asymbolindex signature is nowsymbolrather thanstring.- A class can extend a value with a construct signature.
x !== undefinedno longer stops refining after a call that passesundefinedas an argument: (e.g. try-Flow)
Library Definitions:
- Well-known symbols on
Symbolare typed asunique symbol, andSymbol.metadatais now available.