diff --git a/packages/babel-generator/src/generators/flow.js b/packages/babel-generator/src/generators/flow.js index 156c0114ec..92f80deb24 100644 --- a/packages/babel-generator/src/generators/flow.js +++ b/packages/babel-generator/src/generators/flow.js @@ -420,9 +420,11 @@ export function ObjectTypeIndexer(node: Object) { } this._variance(node); this.token("["); - this.print(node.id, node); - this.token(":"); - this.space(); + if (node.id) { + this.print(node.id, node); + this.token(":"); + this.space(); + } this.print(node.key, node); this.token("]"); this.token(":"); diff --git a/packages/babel-generator/test/fixtures/flow/object-literal-types/actual.js b/packages/babel-generator/test/fixtures/flow/object-literal-types/actual.js index e7c44cbd0f..6d747ee65e 100644 --- a/packages/babel-generator/test/fixtures/flow/object-literal-types/actual.js +++ b/packages/babel-generator/test/fixtures/flow/object-literal-types/actual.js @@ -7,3 +7,5 @@ type T = { ...U, p: V, }; type T = { ...{}|{ p: V, }}; type T = { foo(): number } type T = { foo: () => number } +type T = { [string]: U }; +type T = { [param: string]: U }; diff --git a/packages/babel-generator/test/fixtures/flow/object-literal-types/expected.js b/packages/babel-generator/test/fixtures/flow/object-literal-types/expected.js index 4eb91613ba..e394e17da3 100644 --- a/packages/babel-generator/test/fixtures/flow/object-literal-types/expected.js +++ b/packages/babel-generator/test/fixtures/flow/object-literal-types/expected.js @@ -22,3 +22,9 @@ type T = { type T = { foo: () => number }; +type T = { + [string]: U +}; +type T = { + [param: string]: U +};