microsoft / microsoft/TypeScript

Allow wrapped values to be used in place of primitives.

Offen
#2,361 43 Kommentare 106 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Needs Proposal Suggestion
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
2 T. 4 Std.
Gemergte PRs (30 T.)
132

Beschreibung

``` ts
class NumberWrapper {
constructor(private value: number) {}
valueOf(): number { return this.value; }
}

var x = new NumberWrapper(1);

// The right-hand side of an arithmetic operation
// must be of type 'any', 'number' or an enum type.
console.log(2 + x);
```

It would be nice if an arithmetic operation could allow using the wrapped number because it's `valueOf()` method returns the expected primitive type.

This can be generalized to: if type `T` is expected, then a value that implements the following interface can be used.

``` ts
interface Wrapped {
valueOf(): T;
}
```

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 damit, das arithmetische Beispiel im Issue zu reproduzieren und den Pfad der Typprüfung arithmetischer Operanden in TypeScript nachzuverfolgen; die Beschreibung nennt keine Quelldatei, keinen Test und keinen Einstiegspunkt. Erledigt ist die Aufgabe, wenn verpackte Werte mit einer valueOf()-Methode, die den erwarteten primitiven Typ zurückgibt, in den relevanten arithmetischen Operationen akzeptiert werden und dieses Verhalten durch Tests abgedeckt ist.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
compilers
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

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