Skip to content

⬅️ Back to Table of Contents

📄 no-unused-private-class-members

📊 Analysis Summary

Metric Count
🔧 Functions 1
📦 Imports 3
📑 Type Aliases 2

📚 Table of Contents

🛠️ File Location:

📂 packages/eslint-plugin/src/rules/no-unused-private-class-members.ts

📤 Default Export

export default createRule<Options, MessageIds>({ ... })
Property Value
name 'no-unused-private-class-members'
meta.type 'problem'
meta.docs.description 'Disallow unused private class members'
meta.docs.extendsBaseRule true
meta.docs.requiresTypeChecking false
meta.messages.unusedPrivateClassMember "Private class member '{{classMemberName}}' is defined but never used."
meta.schema []
defaultOptions []

Entry point: create — documented under Functions.


📦 Imports

Name Source
ESLintUtils @typescript-eslint/utils
createRule ../util
analyzeClassMemberUsage ../util/class-scope-analyzer/classScopeAnalyzer

Functions

create(context: any): { 'Program:exit'(node: any): void; }

Parameters:

  • context any

Returns: { 'Program:exit'(node: any): void; }

Calls:

  • analyzeClassMemberUsage (from ../util/class-scope-analyzer/classScopeAnalyzer)
  • ESLintUtils.nullThrows
  • result.values
  • classScope.members.instance.values
  • classScope.members.static.values
  • member.isPrivate
  • member.isHashPrivate
  • member.isUsed
  • context.report
Code
create(context) {
    return {
      'Program:exit'(node) {
        const result = analyzeClassMemberUsage(
          node,
          ESLintUtils.nullThrows(
            context.sourceCode.scopeManager,
            'Missing required scope manager',
          ),
        );

        for (const classScope of result.values()) {
          for (const member of [
            ...classScope.members.instance.values(),
            ...classScope.members.static.values(),
          ]) {
            if (
              (!member.isPrivate() && !member.isHashPrivate()) ||
              member.isUsed()
            ) {
              continue;
            }

            context.report({
              node: member.nameNode,
              messageId: 'unusedPrivateClassMember',
              data: { classMemberName: member.name },
            });
          }
        }
      },
    };
  }

Type Aliases

Options

type Options = [];

MessageIds

type MessageIds = 'unusedPrivateClassMember';

Generated by Syntax Scribe