Skip to content

⬅️ Back to Table of Contents

📄 no-restricted-types.ts

📊 Analysis Summary

Metric Count
🔧 Functions 12
📦 Imports 5
📊 Variables & Constants 4
📑 Type Aliases 3

📚 Table of Contents

🛠️ File Location:

📂 packages/eslint-plugin/src/rules/no-restricted-types.ts

📦 Imports

Name Source
TSESLint @typescript-eslint/utils
TSESTree @typescript-eslint/utils
AST_NODE_TYPES @typescript-eslint/utils
createRule ../util
objectReduceKey ../util

Variables & Constants

Name Type Kind Value Exported
TYPE_KEYWORDS { bigint: any; boolean: any; never: any; null: any; number: any; object: any; string: any; symbol: any; undefined: any; unknown: any; void: any; } const `{
bigint: AST_NODE_TYPES.TSBigIntKeyword,
boolean: AST_NODE_TYPES.TSBooleanKeyword,
never: AST_NODE_TYPES.TSNeverKeyword,
null: AST_NODE_TYPES.TSNullKeyword,
number: AST_NODE_TYPES.TSNumberKeyword,
object: AST_NODE_TYPES.TSObjectKeyword,
string: AST_NODE_TYPES.TSStringKeyword,
symbol: AST_NODE_TYPES.TSSymbolKeyword,
undefined: AST_NODE_TYPES.TSUndefinedKeyword,
unknown: AST_NODE_TYPES.TSUnknownKeyword,
void: AST_NODE_TYPES.TSVoidKeyword,
}`
bannedTypes Map<string, unknown> const `new Map(
Object.entries(types).map(([type, data]) => [removeSpaces(type), data]),
)`
fixWith any const bannedType && typeof bannedType === 'object' && bannedType.fixWith
suggest any const `bannedType && typeof bannedType === 'object'
? bannedType.suggest
: undefined`

Functions

removeSpaces(str: string): string

Code
function removeSpaces(str: string): string {
  return str.replaceAll(/\s/g, '');
}
  • Parameters:
  • str: string
  • Return Type: string
  • Calls:
  • str.replaceAll

stringifyNode(node: TSESTree.Node, sourceCode: TSESLint.SourceCode): string

Code
function stringifyNode(
  node: TSESTree.Node,
  sourceCode: TSESLint.SourceCode,
): string {
  return removeSpaces(sourceCode.getText(node));
}
  • Parameters:
  • node: TSESTree.Node
  • sourceCode: TSESLint.SourceCode
  • Return Type: string
  • Calls:
  • removeSpaces
  • sourceCode.getText

getCustomMessage(bannedType: string | true | { fixWith?: string; message?: string } | null): string

Code
function getCustomMessage(
  bannedType: string | true | { fixWith?: string; message?: string } | null,
): string {
  if (!bannedType || bannedType === true) {
    return '';
  }

  if (typeof bannedType === 'string') {
    return ` ${bannedType}`;
  }

  if (bannedType.message) {
    return ` ${bannedType.message}`;
  }

  return '';
}
  • Parameters:
  • bannedType: string | true | { fixWith?: string; message?: string } | null
  • Return Type: string

checkBannedTypes(typeNode: TSESTree.Node, name: string): void

Code
function checkBannedTypes(
      typeNode: TSESTree.Node,
      name = stringifyNode(typeNode, context.sourceCode),
    ): void {
      const bannedType = bannedTypes.get(name);

      if (bannedType == null || bannedType === false) {
        return;
      }

      const customMessage = getCustomMessage(bannedType);
      const fixWith =
        bannedType && typeof bannedType === 'object' && bannedType.fixWith;
      const suggest =
        bannedType && typeof bannedType === 'object'
          ? bannedType.suggest
          : undefined;

      context.report({
        node: typeNode,
        messageId: 'bannedTypeMessage',
        data: {
          name,
          customMessage,
        },
        fix: fixWith
          ? (fixer): TSESLint.RuleFix => fixer.replaceText(typeNode, fixWith)
          : null,
        suggest: suggest?.map(replacement => ({
          messageId: 'bannedTypeReplacement',
          data: {
            name,
            replacement,
          },
          fix: (fixer): TSESLint.RuleFix =>
            fixer.replaceText(typeNode, replacement),
        })),
      });
    }
  • Parameters:
  • typeNode: TSESTree.Node
  • name: string
  • Return Type: void
  • Calls:
  • bannedTypes.get
  • getCustomMessage
  • context.report
  • fixer.replaceText
  • suggest?.map

fix(fixer: any): TSESLint.RuleFix

Code
(fixer): TSESLint.RuleFix =>
            fixer.replaceText(typeNode, replacement)
  • Parameters:
  • fixer: any
  • Return Type: TSESLint.RuleFix
  • Calls:
  • fixer.replaceText

fix(fixer: any): TSESLint.RuleFix

Code
(fixer): TSESLint.RuleFix =>
            fixer.replaceText(typeNode, replacement)
  • Parameters:
  • fixer: any
  • Return Type: TSESLint.RuleFix
  • Calls:
  • fixer.replaceText

fix(fixer: any): TSESLint.RuleFix

Code
(fixer): TSESLint.RuleFix =>
            fixer.replaceText(typeNode, replacement)
  • Parameters:
  • fixer: any
  • Return Type: TSESLint.RuleFix
  • Calls:
  • fixer.replaceText

fix(fixer: any): TSESLint.RuleFix

Code
(fixer): TSESLint.RuleFix =>
            fixer.replaceText(typeNode, replacement)
  • Parameters:
  • fixer: any
  • Return Type: TSESLint.RuleFix
  • Calls:
  • fixer.replaceText

fix(fixer: any): TSESLint.RuleFix

Code
(fixer): TSESLint.RuleFix =>
            fixer.replaceText(typeNode, replacement)
  • Parameters:
  • fixer: any
  • Return Type: TSESLint.RuleFix
  • Calls:
  • fixer.replaceText

fix(fixer: any): TSESLint.RuleFix

Code
(fixer): TSESLint.RuleFix =>
            fixer.replaceText(typeNode, replacement)
  • Parameters:
  • fixer: any
  • Return Type: TSESLint.RuleFix
  • Calls:
  • fixer.replaceText

fix(fixer: any): TSESLint.RuleFix

Code
(fixer): TSESLint.RuleFix =>
            fixer.replaceText(typeNode, replacement)
  • Parameters:
  • fixer: any
  • Return Type: TSESLint.RuleFix
  • Calls:
  • fixer.replaceText

fix(fixer: any): TSESLint.RuleFix

Code
(fixer): TSESLint.RuleFix =>
            fixer.replaceText(typeNode, replacement)
  • Parameters:
  • fixer: any
  • Return Type: TSESLint.RuleFix
  • Calls:
  • fixer.replaceText

Type Aliases

Types

type Types = Record<
  string,
  | boolean
  | string
  | {
      fixWith?: string;
      message: string;
      suggest?: readonly string[];
    }
  | null
>;

Options

type Options = [
  {
    types?: Types;
  },
];

MessageIds

type MessageIds = 'bannedTypeMessage' | 'bannedTypeReplacement';