Skip to content

⬅️ Back to Table of Contents

📄 prefer-as-const.ts

📊 Analysis Summary

Metric Count
🔧 Functions 13
📦 Imports 4

📚 Table of Contents

🛠️ File Location:

📂 packages/eslint-plugin/src/rules/prefer-as-const.ts

📦 Imports

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

Functions

compareTypes(valueNode: TSESTree.Expression, typeNode: TSESTree.TypeNode, canFix: boolean): void

Code
function compareTypes(
      valueNode: TSESTree.Expression,
      typeNode: TSESTree.TypeNode,
      canFix: boolean,
    ): void {
      if (
        valueNode.type === AST_NODE_TYPES.Literal &&
        typeNode.type === AST_NODE_TYPES.TSLiteralType &&
        typeNode.literal.type === AST_NODE_TYPES.Literal &&
        valueNode.raw === typeNode.literal.raw
      ) {
        if (canFix) {
          context.report({
            node: typeNode,
            messageId: 'preferConstAssertion',
            fix: fixer => fixer.replaceText(typeNode, 'const'),
          });
        } else {
          context.report({
            node: typeNode,
            messageId: 'variableConstAssertion',
            suggest: [
              {
                messageId: 'variableSuggest',
                fix: (fixer): TSESLint.RuleFix[] => [
                  fixer.remove(typeNode.parent),
                  fixer.insertTextAfter(valueNode, ' as const'),
                ],
              },
            ],
          });
        }
      }
    }
  • Parameters:
  • valueNode: TSESTree.Expression
  • typeNode: TSESTree.TypeNode
  • canFix: boolean
  • Return Type: void
  • Calls:
  • context.report
  • fixer.replaceText
  • fixer.remove
  • fixer.insertTextAfter

fix(fixer: any): any

Code
fixer => fixer.replaceText(typeNode, 'const')
  • Parameters:
  • fixer: any
  • Return Type: any
  • Calls:
  • fixer.replaceText

fix(fixer: any): any

Code
fixer => fixer.replaceText(typeNode, 'const')
  • Parameters:
  • fixer: any
  • Return Type: any
  • Calls:
  • fixer.replaceText

fix(fixer: any): TSESLint.RuleFix[]

Code
(fixer): TSESLint.RuleFix[] => [
                  fixer.remove(typeNode.parent),
                  fixer.insertTextAfter(valueNode, ' as const'),
                ]
  • Parameters:
  • fixer: any
  • Return Type: TSESLint.RuleFix[]

fix(fixer: any): TSESLint.RuleFix[]

Code
(fixer): TSESLint.RuleFix[] => [
                  fixer.remove(typeNode.parent),
                  fixer.insertTextAfter(valueNode, ' as const'),
                ]
  • Parameters:
  • fixer: any
  • Return Type: TSESLint.RuleFix[]

fix(fixer: any): TSESLint.RuleFix[]

Code
(fixer): TSESLint.RuleFix[] => [
                  fixer.remove(typeNode.parent),
                  fixer.insertTextAfter(valueNode, ' as const'),
                ]
  • Parameters:
  • fixer: any
  • Return Type: TSESLint.RuleFix[]

fix(fixer: any): TSESLint.RuleFix[]

Code
(fixer): TSESLint.RuleFix[] => [
                  fixer.remove(typeNode.parent),
                  fixer.insertTextAfter(valueNode, ' as const'),
                ]
  • Parameters:
  • fixer: any
  • Return Type: TSESLint.RuleFix[]

fix(fixer: any): any

Code
fixer => fixer.replaceText(typeNode, 'const')
  • Parameters:
  • fixer: any
  • Return Type: any
  • Calls:
  • fixer.replaceText

fix(fixer: any): any

Code
fixer => fixer.replaceText(typeNode, 'const')
  • Parameters:
  • fixer: any
  • Return Type: any
  • Calls:
  • fixer.replaceText

fix(fixer: any): TSESLint.RuleFix[]

Code
(fixer): TSESLint.RuleFix[] => [
                  fixer.remove(typeNode.parent),
                  fixer.insertTextAfter(valueNode, ' as const'),
                ]
  • Parameters:
  • fixer: any
  • Return Type: TSESLint.RuleFix[]

fix(fixer: any): TSESLint.RuleFix[]

Code
(fixer): TSESLint.RuleFix[] => [
                  fixer.remove(typeNode.parent),
                  fixer.insertTextAfter(valueNode, ' as const'),
                ]
  • Parameters:
  • fixer: any
  • Return Type: TSESLint.RuleFix[]

fix(fixer: any): TSESLint.RuleFix[]

Code
(fixer): TSESLint.RuleFix[] => [
                  fixer.remove(typeNode.parent),
                  fixer.insertTextAfter(valueNode, ' as const'),
                ]
  • Parameters:
  • fixer: any
  • Return Type: TSESLint.RuleFix[]

fix(fixer: any): TSESLint.RuleFix[]

Code
(fixer): TSESLint.RuleFix[] => [
                  fixer.remove(typeNode.parent),
                  fixer.insertTextAfter(valueNode, ' as const'),
                ]
  • Parameters:
  • fixer: any
  • Return Type: TSESLint.RuleFix[]