microsoft / microsoft/TypeScript

[isolatedDeclarations] Type of const variable declared with template literal expression containing only literals still requires explicit annotation

Offen
#59,157 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Domain: flag: isolatedDeclarations Help Wanted Possible Improvement
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.4k
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
117

Beschreibung

🔎 Search Terms

isolated declarations template literal expression

🕗 Version & Regression Information
  • This is the behavior in every version I tried
⏯ Playground Link

https://www.typescriptlang.org/play/?isolatedDeclarations=true&ts=5.6.0-dev.20240705#code/KYDwDg9gTgLgBAG2PAZhCcC8cAGASAbwHIiBfHAbgCgrRJY4BjCAOwGd4AjAQyi10Ily1WuGioAri0YwAlqzg8AXgAoAlHAJU4OuFGQSoLAcTKUqpIA

💻 Code
export let foo = `${''}`;

export const bar = `${''}`;

export function baz() {
    return `${''}`;
}
🙁 Actual behavior

bar has a type error:

Variable must have an explicit type annotation with --isolatedDeclarations.(9010)
input.tsx(3, 14): Add a type annotation to the variable bar.

foo would also have a type error if as const was added to the expression.

🙂 Expected behavior

No type error

Additional information about the issue

fun fact: I accidentally discovered this behavior when I found that oxc-transform has type errors for both const, let, and return types.

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

Beginne mit dem verlinkten TypeScript Playground und reproduziere die isolatedDeclarations-Diagnose für die exportierte const. Vergleiche sie anschließend mit den let- und function-Beispielen im Issue. Verfolge den Compiler-Pfad, der für die Typinferenz dieser Deklarationen verantwortlich ist; fertig ist die Aufgabe, wenn der ausschließlich aus Literalen bestehende Template-Ausdruck keine explizite Annotation mehr erfordert und die vorhandenen Fälle 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
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

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