Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 997783f

Browse files
authored
feat(eslint-plugin): [ban-types] ban types in extends and implements (typescript-eslint#7129)
* test(eslint-plugin): add test for banning types when using intersections * feat(eslint-plugin): ban certain types to be extended from
1 parent faea3ff commit 997783f

File tree

2 files changed

+81
-0
lines changed

2 files changed

+81
-0
lines changed

packages/eslint-plugin/src/rules/ban-types.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -260,6 +260,12 @@ export default util.createRule<Options, MessageIds>({
260260
checkBannedTypes(node);
261261
}
262262
},
263+
TSInterfaceHeritage(node): void {
264+
checkBannedTypes(node);
265+
},
266+
TSClassImplements(node): void {
267+
checkBannedTypes(node);
268+
},
263269
};
264270
},
265271
});

packages/eslint-plugin/tests/rules/ban-types.test.ts

Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -657,6 +657,81 @@ let baz: object = {};
657657
},
658658
],
659659
},
660+
{
661+
code: 'type Baz = 1 & Foo;',
662+
errors: [
663+
{
664+
messageId: 'bannedTypeMessage',
665+
},
666+
],
667+
options: [
668+
{
669+
types: {
670+
Foo: { message: '' },
671+
},
672+
},
673+
],
674+
},
675+
{
676+
code: 'interface Foo extends Bar {}',
677+
errors: [
678+
{
679+
messageId: 'bannedTypeMessage',
680+
},
681+
],
682+
options: [
683+
{
684+
types: {
685+
Bar: { message: '' },
686+
},
687+
},
688+
],
689+
},
690+
{
691+
code: 'interface Foo extends Bar, Baz {}',
692+
errors: [
693+
{
694+
messageId: 'bannedTypeMessage',
695+
},
696+
],
697+
options: [
698+
{
699+
types: {
700+
Bar: { message: '' },
701+
},
702+
},
703+
],
704+
},
705+
{
706+
code: 'class Foo implements Bar {}',
707+
errors: [
708+
{
709+
messageId: 'bannedTypeMessage',
710+
},
711+
],
712+
options: [
713+
{
714+
types: {
715+
Bar: { message: '' },
716+
},
717+
},
718+
],
719+
},
720+
{
721+
code: 'class Foo implements Bar, Baz {}',
722+
errors: [
723+
{
724+
messageId: 'bannedTypeMessage',
725+
},
726+
],
727+
options: [
728+
{
729+
types: {
730+
Bar: { message: 'Bla' },
731+
},
732+
},
733+
],
734+
},
660735
...objectReduceKey(
661736
TYPE_KEYWORDS,
662737
(acc: TSESLint.InvalidTestCase<MessageIds, Options>[], key) => {

0 commit comments

Comments
 (0)