microsoft / microsoft/TypeScript

Add `NonEmptyArray` to `lib` (but **not** `length > 0` narrowing)

Offen
#60,491 6 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Awaiting More Feedback Suggestion
Vorherrschende Sprache
Go
Sterne
111k
Forks
14.3k
Ø Merge
1 T. 19 Std.
Gemergte PRs (30 T.)
117

Beschreibung

⚙ Compilation target

ES2023

⚙ Library

ES2023

Missing / Incorrect Definition
type NonEmptyArray<T> = [T, ...T[]]
type ReadonlyNonEmptyArray<T> = readonly [T, ...readonly T[]]
Sample Code
const is_non_empty = <T>(a: ReadonlyArray<T>): a is ReadonlyNonEmptyArray<T> =>
	a.length > 0

function sum(a: ReadonlyNonEmptyArray<number>): number
function sum(a: ReadonlyNonEmptyArray<bigint>): bigint
function sum(a:
	ReadonlyNonEmptyArray<number> |
	ReadonlyNonEmptyArray<bigint>
) {
	//@ts-expect-error
	return a.reduce((acc, x) => acc + x)
}
Documentation Link

There's no docs that I'm aware of. However, there are multiple issues using this boilerplate. See also: #60463

Here's a WIP example implementations of sum. The sample code is a simplified version of that. More info here

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, die ES2023-Bibliotheksdeklarationsdateien und die vorhandenen Array-Typdefinitionen zu finden; im Issue wird keine bestimmte Datei oder kein bestimmter Test genannt. Füge die veränderlichen und schreibgeschützten NonEmptyArray-Aliase hinzu, ohne eine auf der Länge basierende Typverengung einzuführen, und überprüfe anschließend das bereitgestellte Typprüfungsbeispiel sowie die relevanten Compiler-Tests.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
typescript
Bereich
compilers
Issue-Typ
Feature
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

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