Skip to content

⬅️ Back to Table of Contents

📄 prefer-reduce-type-parameter.ts

📊 Analysis Summary

Metric Count
🔧 Functions 9
📦 Imports 6
📊 Variables & Constants 2
📑 Type Aliases 1

📚 Table of Contents

🛠️ File Location:

📂 packages/eslint-plugin/src/rules/prefer-reduce-type-parameter.ts

📦 Imports

Name Source
TSESTree @typescript-eslint/utils
createRule ../util
getConstrainedTypeAtLocation ../util
getParserServices ../util
isStaticMemberAccessOfValue ../util
isTypeAssertion ../util

Variables & Constants

Name Type Kind Value Exported
isAssertionNecessary boolean const `!checker.isTypeAssignableTo(
initializerType,
assertedType,
)`
fixes any[] const `[
fixer.removeRange([
secondArg.range[0],
secondArg.expression.range[0],
]),
fixer.removeRange([
secondArg.expression.range[1],
secondArg.range[1],
]),
]`

Functions

isArrayType(type: ts.Type): boolean

Code
function isArrayType(type: ts.Type): boolean {
      return tsutils
        .unionConstituents(type)
        .every(unionPart =>
          tsutils
            .intersectionConstituents(unionPart)
            .every(t => checker.isArrayType(t) || checker.isTupleType(t)),
        );
    }
  • Parameters:
  • type: ts.Type
  • Return Type: boolean
  • Calls:
  • tsutils .unionConstituents(type) .every
  • tsutils .intersectionConstituents(unionPart) .every
  • checker.isArrayType
  • checker.isTupleType

fix(fixer: any): any[]

Code
fixer => {
              const fixes = [
                fixer.removeRange([
                  secondArg.range[0],
                  secondArg.expression.range[0],
                ]),
                fixer.removeRange([
                  secondArg.expression.range[1],
                  secondArg.range[1],
                ]),
              ];

              if (!callee.parent.typeArguments) {
                fixes.push(
                  fixer.insertTextAfter(
                    callee,
                    `<${context.sourceCode.getText(secondArg.typeAnnotation)}>`,
                  ),
                );
              }

              return fixes;
            }
  • Parameters:
  • fixer: any
  • Return Type: any[]
  • Calls:
  • fixer.removeRange
  • fixes.push
  • fixer.insertTextAfter
  • context.sourceCode.getText

fix(fixer: any): any[]

Code
fixer => {
              const fixes = [
                fixer.removeRange([
                  secondArg.range[0],
                  secondArg.expression.range[0],
                ]),
                fixer.removeRange([
                  secondArg.expression.range[1],
                  secondArg.range[1],
                ]),
              ];

              if (!callee.parent.typeArguments) {
                fixes.push(
                  fixer.insertTextAfter(
                    callee,
                    `<${context.sourceCode.getText(secondArg.typeAnnotation)}>`,
                  ),
                );
              }

              return fixes;
            }
  • Parameters:
  • fixer: any
  • Return Type: any[]
  • Calls:
  • fixer.removeRange
  • fixes.push
  • fixer.insertTextAfter
  • context.sourceCode.getText

fix(fixer: any): any[]

Code
fixer => {
              const fixes = [
                fixer.removeRange([
                  secondArg.range[0],
                  secondArg.expression.range[0],
                ]),
                fixer.removeRange([
                  secondArg.expression.range[1],
                  secondArg.range[1],
                ]),
              ];

              if (!callee.parent.typeArguments) {
                fixes.push(
                  fixer.insertTextAfter(
                    callee,
                    `<${context.sourceCode.getText(secondArg.typeAnnotation)}>`,
                  ),
                );
              }

              return fixes;
            }
  • Parameters:
  • fixer: any
  • Return Type: any[]
  • Calls:
  • fixer.removeRange
  • fixes.push
  • fixer.insertTextAfter
  • context.sourceCode.getText

fix(fixer: any): any[]

Code
fixer => {
              const fixes = [
                fixer.removeRange([
                  secondArg.range[0],
                  secondArg.expression.range[0],
                ]),
                fixer.removeRange([
                  secondArg.expression.range[1],
                  secondArg.range[1],
                ]),
              ];

              if (!callee.parent.typeArguments) {
                fixes.push(
                  fixer.insertTextAfter(
                    callee,
                    `<${context.sourceCode.getText(secondArg.typeAnnotation)}>`,
                  ),
                );
              }

              return fixes;
            }
  • Parameters:
  • fixer: any
  • Return Type: any[]
  • Calls:
  • fixer.removeRange
  • fixes.push
  • fixer.insertTextAfter
  • context.sourceCode.getText

fix(fixer: any): any[]

Code
fixer => {
              const fixes = [
                fixer.removeRange([
                  secondArg.range[0],
                  secondArg.expression.range[0],
                ]),
                fixer.removeRange([
                  secondArg.expression.range[1],
                  secondArg.range[1],
                ]),
              ];

              if (!callee.parent.typeArguments) {
                fixes.push(
                  fixer.insertTextAfter(
                    callee,
                    `<${context.sourceCode.getText(secondArg.typeAnnotation)}>`,
                  ),
                );
              }

              return fixes;
            }
  • Parameters:
  • fixer: any
  • Return Type: any[]
  • Calls:
  • fixer.removeRange
  • fixes.push
  • fixer.insertTextAfter
  • context.sourceCode.getText

fix(fixer: any): any[]

Code
fixer => {
              const fixes = [
                fixer.removeRange([
                  secondArg.range[0],
                  secondArg.expression.range[0],
                ]),
                fixer.removeRange([
                  secondArg.expression.range[1],
                  secondArg.range[1],
                ]),
              ];

              if (!callee.parent.typeArguments) {
                fixes.push(
                  fixer.insertTextAfter(
                    callee,
                    `<${context.sourceCode.getText(secondArg.typeAnnotation)}>`,
                  ),
                );
              }

              return fixes;
            }
  • Parameters:
  • fixer: any
  • Return Type: any[]
  • Calls:
  • fixer.removeRange
  • fixes.push
  • fixer.insertTextAfter
  • context.sourceCode.getText

fix(fixer: any): any[]

Code
fixer => {
              const fixes = [
                fixer.removeRange([
                  secondArg.range[0],
                  secondArg.expression.range[0],
                ]),
                fixer.removeRange([
                  secondArg.expression.range[1],
                  secondArg.range[1],
                ]),
              ];

              if (!callee.parent.typeArguments) {
                fixes.push(
                  fixer.insertTextAfter(
                    callee,
                    `<${context.sourceCode.getText(secondArg.typeAnnotation)}>`,
                  ),
                );
              }

              return fixes;
            }
  • Parameters:
  • fixer: any
  • Return Type: any[]
  • Calls:
  • fixer.removeRange
  • fixes.push
  • fixer.insertTextAfter
  • context.sourceCode.getText

fix(fixer: any): any[]

Code
fixer => {
              const fixes = [
                fixer.removeRange([
                  secondArg.range[0],
                  secondArg.expression.range[0],
                ]),
                fixer.removeRange([
                  secondArg.expression.range[1],
                  secondArg.range[1],
                ]),
              ];

              if (!callee.parent.typeArguments) {
                fixes.push(
                  fixer.insertTextAfter(
                    callee,
                    `<${context.sourceCode.getText(secondArg.typeAnnotation)}>`,
                  ),
                );
              }

              return fixes;
            }
  • Parameters:
  • fixer: any
  • Return Type: any[]
  • Calls:
  • fixer.removeRange
  • fixes.push
  • fixer.insertTextAfter
  • context.sourceCode.getText

Type Aliases

MemberExpressionWithCallExpressionParent

type MemberExpressionWithCallExpressionParent = {
  parent: TSESTree.CallExpression;
} & TSESTree.MemberExpression;