microsoft / microsoft/TypeScript
Allow type narrowing for arrays using Array#forEach and assertion function
Dieses Issue hat noch niemand übernommen.
- Vorherrschende Sprache
- Go
- Sterne
- 111k
- Forks
- 14.4k
- Ø Merge
- 1 T. 19 Std.
- Gemergte PRs (30 T.)
- 117
Beschreibung
lib Update Request
Configuration Check
My compilation target is ES5 and my lib is the default.
Missing / Incorrect Definition
Array type narrowing using Array#forEach with assertion function, in a fashion similar to Array#every, has not been defined. Also applies to ReadonlyArray.
Sample Code
const foo: (number | string)[] = ['aaa'];
function assertString(x: unknown): asserts x is string {
if (typeof x !== 'string') throw new Error('Must be a string!');
}
foo.forEach(assertString);
foo[0].slice(0); // foo should be string[] from here
Documentation Link
Based on Array#every<S extends T> from lib.es5.d.ts.
A pull request for implementing this definition has been created #52388.
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Öffne einen Pull Request, der die Issue-Nummer nennt.
Rechercherichtung
Beginnen Sie in lib/lib.es5.d.ts und verwenden Sie die vorhandene Definition von Array#every als Referenz. Prüfen Sie die Deklarationen von Array und ReadonlyArray fürEach anhand des bereitgestellten Beispiels für eine Assertion-Funktion. Als erledigt gilt die Aufgabe, wenn das Beispiel den Elementtyp des Arrays nach forEach ohne Fehler eingrenzt und sowohl veränderliche als auch schreibgeschützte Arrays abgedeckt sind.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Bewertung
- Tech-Stack
- typescript
- Bereich
- compilers
- Issue-Typ
- Feature
- Schwierigkeit
- 2/5
- Geschätzter Aufwand
- 1-3 Stunden
- Aktivitätsstatus
- Veraltet
- Klarheit
- Klar beschrieben
- Anfängerfreundlichkeit
- 20/100