microsoft / microsoft/TypeScript

Assignment of argument to argument loses deduced typing

Offen
#26,397 1 Kommentar 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bug Domain: check: Control Flow
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
2 T. 4 Std.
Gemergte PRs (30 T.)
132

Beschreibung

Could be a duplicate but difficult to construct an issue search to discern.

Problem shows with typescript@latest version 3.0.1.

Given nature of problem suspect that it would not have been fixed in typescript@next. Apologies for not testing.

type inference error argument

Code

// A *self-contained* demonstration of the problem follows...
// Just paste this code into your favorite TypeScript IDE
function foobar_good(arg: unknown): void | number {

  if (typeof arg != 'number') {
    return
  }

  return arg;
}

function foobar_bad(arg: unknown): void | number {

  if (typeof arg != 'number') {
    return
  }

  arg = arg;

  return arg;
}

[ts] Type 'unknown' is not assignable to type 'number | void'.
Type 'unknown' is not assignable to type 'void'.

Expected behavior:
Should compile.

Actual behavior:
Does not compile.

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 eigenständigen TypeScript-Beispiel im Issue und kompiliere es mit TypeScript 3.0.1, wobei du foobar_good mit foobar_bad vergleichst. Untersuche, wie sich die Zuweisung von arg an sich selbst auf die Eingrenzung von unknown auf number auswirkt. Als erledigt gilt die Aufgabe, wenn der gezeigte Code kompiliert und dabei das erwartete Type-Checking-Verhalten beibehält.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
42/100

Neue Issues direkt in Ihr Postfach

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