diff --git a/packages/eslint-plugin/src/rules/no-empty-interface.ts b/packages/eslint-plugin/src/rules/no-empty-interface.ts index 039415ad68f..2e9e61c1e0e 100644 --- a/packages/eslint-plugin/src/rules/no-empty-interface.ts +++ b/packages/eslint-plugin/src/rules/no-empty-interface.ts @@ -61,13 +61,18 @@ export default util.createRule({ context.report({ node: node.id, messageId: 'noEmptyWithSuper', - fix: fixer => - fixer.replaceText( + fix: fixer => { + let typeParam = ''; + if (node.typeParameters) { + typeParam = sourceCode.getText(node.typeParameters); + } + return fixer.replaceText( node, - `type ${sourceCode.getText(node.id)} = ${sourceCode.getText( - extend[0], - )}`, - ), + `type ${sourceCode.getText( + node.id, + )}${typeParam} = ${sourceCode.getText(extend[0])}`, + ); + }, }); } } diff --git a/packages/eslint-plugin/tests/rules/no-empty-interface.test.ts b/packages/eslint-plugin/tests/rules/no-empty-interface.test.ts index 1a69e06f140..840e729f183 100644 --- a/packages/eslint-plugin/tests/rules/no-empty-interface.test.ts +++ b/packages/eslint-plugin/tests/rules/no-empty-interface.test.ts @@ -133,5 +133,20 @@ type Foo = R }, ], }, + { + code: ` +interface Foo extends Bar {} + `, + output: noFormat` +type Foo = Bar + `, + errors: [ + { + messageId: 'noEmptyWithSuper', + line: 2, + column: 11, + }, + ], + }, ], });