Skip to content

typescript version 7 complains about unused generic type even though version 6 does notΒ #64308

Description

@sudo-barun

πŸ”Ž Search Terms

"TS6196", "is declared but never used", "unused generic", "noUnusedParameters"

πŸ•— Version & Regression Information

  • This changed between versions 6.0.3 and 7.0.2

⏯ Playground Link

https://www.typescriptlang.org/play/?#code/C4TwDgpgBAShBmAeAKgPigXigbwFAEgA3AQwBsBXCALimQBpcBfXXecgOwGNgBLAe3ZROAJwjFgEOEnoBVKBAAeE9gBMAzlEJ8eK1AAoSFapu0qAlDSkpUAblYdu-QSLESraA2Uo1kF2Ams7Ni5eASFRcUkAj0NvWj93dDx8UWByYUFkoi8IBnxGO2ZcTgE1YChReABGTHDXKPg9MzsS9jU+UggAOlI+AHM9Sqrm4tLyyoAmWpdIq3ZyAFsAIwhhOhMdfRHW9s6e-sGECe2xioQAZmmItwD55dX9KvOTto7u3oHK57sgA

πŸ’» Code

type Ref<T> = {
	value: T,
}

function createRef<T,U extends void>(value: void): Ref<T>;
function createRef<T>(value: T): Ref<T>;
function createRef<T>(value: T): Ref<T> {
	return {
		value,
	};
}

const ref1 = createRef();
console.log(ref1);
const ref2 = createRef<number, void>();
console.log(ref2);
const ref3 = createRef<number>(13);
console.log(ref3);

πŸ™ Actual behavior

The typescript compiler version 7 fails with following error message:

code.ts:5:22 - error TS6196: 'U' is declared but never used.

5 function createRef<T,U extends void>(value: void): Ref<T>;
                       ~~~~~~~~~~~~~~


Found 1 error in code.ts:5

The typescript compiler version 6 succeeds without any errors.

πŸ™‚ Expected behavior

The typescript compiler version 7 should behave exactly like version 6 i.e. not fail.

Additional information about the issue

This error only occurs with noUnusedParameters set to true.

Activity

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

    Working as IntendedThe behavior described is the intended behavior; this is not a bug

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions