Skip to content

Commit

Permalink
feat(eslint-plugin): [ban-types] ban types in extends and implements (#…
Browse files Browse the repository at this point in the history
…7129)

* test(eslint-plugin): add test for banning types when using intersections

* feat(eslint-plugin): ban certain types to be extended from
  • Loading branch information
Haberkamp committed Jun 28, 2023
1 parent faea3ff commit 997783f
Show file tree
Hide file tree
Showing 2 changed files with 81 additions and 0 deletions.
6 changes: 6 additions & 0 deletions packages/eslint-plugin/src/rules/ban-types.ts
Expand Up @@ -260,6 +260,12 @@ export default util.createRule<Options, MessageIds>({
checkBannedTypes(node);
}
},
TSInterfaceHeritage(node): void {
checkBannedTypes(node);
},
TSClassImplements(node): void {
checkBannedTypes(node);
},
};
},
});
75 changes: 75 additions & 0 deletions packages/eslint-plugin/tests/rules/ban-types.test.ts
Expand Up @@ -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<MessageIds, Options>[], key) => {
Expand Down

0 comments on commit 997783f

Please sign in to comment.