Skip to content

Unused type parameters should be checked by --noUnusedParameters, not --noUnusedLocals #20568

Description

I reviewed the compiler options for my project and decided to enable --noUnusedLocals but not --noUnusedParameters since the cost-benefit picture seems to be much better for --noUnusedLocals. However, I was surprised to get an error on a type alias that has an unused type parameter for documentation purposes. Since "type parameter" has "parameter" in the name, I expected it would be checked by --noUnusedParameters. I see that several issues have been filed related to the check for unused type parameters, but no one seemed to think it was odd that the check was under --noUnusedLocals.

The code change is very simple, and I'll be happy to prepare a pull request if you agree with the change. I suppose it's a breaking change if someone is using --noUnusedParameters and not --noUnusedLocals; that configuration seems unlikely.

TypeScript Version: current master (5e5b770)

Code

// Compile with --noUnusedLocals
type Oops<T> = number;

Expected behavior:
No errors.

Actual behavior:

unused-type-parameter.ts(1,11): error TS6133: 'T' is declared but its value is never read.

Activity

  1. mhegazy commented on Jan 11, 2018

    @mhegazy
    Contributor

    I suppose you are right.. this is a breaking change technically. but open to taking a PR.

  2. added this to the milestone on Jan 11, 2018
  3. added a commit that references this issue on Jan 12, 2018
    6133470
  4. modified the milestones: , TypeScript 2.8 on Jan 26, 2018
  5. added a commit that references this issue on Jan 26, 2018
    f0ba16c
  6. locked and limited conversation to collaborators on Jul 3, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Breaking ChangeWould introduce errors in existing codeBugA bug in TypeScriptFixedA PR has been merged for this issueHelp WantedYou can do this

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions