babel/packages/babel-plugin-transform-flow-comments
Sam Goldman a38a58bad8 Add support for Flow def-site variance syntax
This syntax allows you to specify whether a type variable can appear in
a covariant or contravariant position, and is super useful for, say,
Promise.

Right now this is hacked in jankily, but in the next major release we
should stop using Identifier nodes for type parameters.
2016-03-06 14:44:09 -08:00
..
2016-02-14 23:25:14 +00:00
2015-12-15 20:14:47 -05:00
2016-02-29 16:12:12 -05:00
2015-12-15 20:14:47 -05:00

babel-plugin-transform-flow-comments

Turn flow type annotations into comments.

You should be able to use this plugin instead of babel-plugin-flow-strip-types to preserve the /* @flow */ directive and still use flow.

http://flowtype.org/blog/2015/02/20/Flow-Comments.html

Example

In

function foo(bar?) {}
function foo2(bar?: string) {}
function foo(x: number): string {}
type B = {
  name: string;
};
export type GraphQLFormattedError = number;
import type A, { B, C } from './types';
import typeof D, { E, F } from './types';

Out

"use strict";

function foo(bar /*:: ?*/) {}
function foo2(bar /*:: ?: string*/) {}
function foo(x /*: number*/) /*: string*/ {}
/*:: type B = {
  name: string;
};*/
/*:: export type GraphQLFormattedError = number;*/
/*:: import type A, { B, C } from './types';*/
/*:: import typeof D, { E, F } from './types';*/

Installation

$ npm install babel-plugin-transform-flow-comments

Usage

.babelrc

{
  "plugins": ["transform-flow-comments"]
}

Via CLI

$ babel --plugins transform-flow-comments script.js

Via Node API

require("babel-core").transform("code", {
  plugins: ["transform-flow-comments"]
});