typescript / intermediate
Snippet
Sicheres Filtern und Transformieren von Arrays mit benutzerdefinierten Typ-Guards
Standard-Aufrufe von Array.prototype.filter scheitern in TypeScript oft daran, optionale oder Nullable-Elemente einzuschränken. Die Implementierung benutzerdefinierter Prädikate (`item is T`) stellt sicher, dass der Typ des Ausgabe-Arrays null- und undefined-Werte korrekt ausschließt.
snippet.ts
typescript
1
2
3
4
5
6
7
8
9
10
type Item = { id: string } | null | undefined;function isPresent<T>(item: T | null | undefined): item is T {return item !== null && item !== undefined;}const rawList: Item[] = [{ id: "a" }, null, { id: "b" }, undefined];const cleanList = rawList.filter(isPresent);cleanList.forEach(item => console.log(item.id));
Erklärung
1
function isPresent<T>(item: T | null | undefined): item is T
Definiert einen generischen benutzerdefinierten Typ-Guard, der ein Typ-Prädikat zurückgibt.
2
const cleanList = rawList.filter(isPresent);
Filtert das Array und verengt gleichzeitig den Rückgabetyp des Arrays von Item[] auf { id: string }[].