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.
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
Via .babelrc (Recommended)
.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"]
});