microsoft / microsoft/TypeScript

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

Offen
#64,308 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Working as Intended
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
2 T. 4 Std.
Gemergte PRs (30 T.)
132

Beschreibung

🔎 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.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Reproduziere den Fehler aus dem verlinkten Playground unter Verwendung von noUnusedParameters und den gezeigten createRef-Überladungen; verfolge dann, wie der Compiler ungenutzte generische Typparameter in Überladungsdeklarationen verarbeitet. Füge einen Regressionstest hinzu, der das Verhalten von Version 7 abdeckt, und überprüfe, dass das Beispiel TS6196 nicht mehr meldet, während andere Diagnosen zu ungenutzten Parametern weiterhin korrekt bleiben.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Aktiv
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
68/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.