diff --git a/packages/eslint-plugin/src/rules/ban-types.ts b/packages/eslint-plugin/src/rules/ban-types.ts index 9e7d9f69f4b..21a1d1c1403 100644 --- a/packages/eslint-plugin/src/rules/ban-types.ts +++ b/packages/eslint-plugin/src/rules/ban-types.ts @@ -260,6 +260,12 @@ export default util.createRule({ checkBannedTypes(node); } }, + TSInterfaceHeritage(node): void { + checkBannedTypes(node); + }, + TSClassImplements(node): void { + checkBannedTypes(node); + }, }; }, }); diff --git a/packages/eslint-plugin/tests/rules/ban-types.test.ts b/packages/eslint-plugin/tests/rules/ban-types.test.ts index 831d17a59a1..5f22d9e4081 100644 --- a/packages/eslint-plugin/tests/rules/ban-types.test.ts +++ b/packages/eslint-plugin/tests/rules/ban-types.test.ts @@ -657,6 +657,81 @@ let baz: object = {}; }, ], }, + { + code: 'type Baz = 1 & Foo;', + errors: [ + { + messageId: 'bannedTypeMessage', + }, + ], + options: [ + { + types: { + Foo: { message: '' }, + }, + }, + ], + }, + { + code: 'interface Foo extends Bar {}', + errors: [ + { + messageId: 'bannedTypeMessage', + }, + ], + options: [ + { + types: { + Bar: { message: '' }, + }, + }, + ], + }, + { + code: 'interface Foo extends Bar, Baz {}', + errors: [ + { + messageId: 'bannedTypeMessage', + }, + ], + options: [ + { + types: { + Bar: { message: '' }, + }, + }, + ], + }, + { + code: 'class Foo implements Bar {}', + errors: [ + { + messageId: 'bannedTypeMessage', + }, + ], + options: [ + { + types: { + Bar: { message: '' }, + }, + }, + ], + }, + { + code: 'class Foo implements Bar, Baz {}', + errors: [ + { + messageId: 'bannedTypeMessage', + }, + ], + options: [ + { + types: { + Bar: { message: 'Bla' }, + }, + }, + ], + }, ...objectReduceKey( TYPE_KEYWORDS, (acc: TSESLint.InvalidTestCase[], key) => {