diff --git a/packages/babel-generator/src/generators/flow.ts b/packages/babel-generator/src/generators/flow.ts index c59b2518389f..133fec107f37 100644 --- a/packages/babel-generator/src/generators/flow.ts +++ b/packages/babel-generator/src/generators/flow.ts @@ -360,7 +360,7 @@ export function _interfaceish( ) { this.print(node.id, node); this.print(node.typeParameters, node); - if (node.extends.length) { + if (node.extends?.length) { this.space(); this.word("extends"); this.space(); diff --git a/packages/babel-generator/test/index.js b/packages/babel-generator/test/index.js index 0993e5c352b8..7dcf37f6112f 100644 --- a/packages/babel-generator/test/index.js +++ b/packages/babel-generator/test/index.js @@ -462,6 +462,17 @@ describe("programmatic generation", function () { }`); }); + it("flow interface with nullish extends", () => { + const interfaceDeclaration = t.interfaceDeclaration( + t.identifier("A"), + undefined, + undefined, + t.objectTypeAnnotation([]), + ); + const output = generate(interfaceDeclaration).code; + expect(output).toBe("interface A {}"); + }); + describe("directives", function () { it("preserves escapes", function () { const directive = t.directive(