Array<Type> vs Type[] in TypeScript: 5 fatale Fehler und wie man sie vermeidet

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Array<Type> vs Type[] in TypeScript: Der Syntaxkampf, den Sie gewinnen müssen

\n\n

Wenn Sie jemals in TypeScript geschrieben haben, haben Sie definitiv zwei Möglichkeiten gesehen, ein Zahlen-Array zu deklarieren:

\n\n
const numbers1: number[] = [1, 2, 3];\nconst numbers2: Array<number> = [1, 2, 3];
\n\n

Beide Varianten funktionieren. Beide werden kompiliert. Beide sind gültiges TypeScript. Warum gibt es dann so viele Diskussionen darum? Warum hat diese Frage auf Stack Overflow tausende Aufrufe? Und vor allem – wie vermeidet man die Fallstricke, die Ihr Projekt ruinieren können?

\n\n

Lassen Sie es uns ein für alle Mal klären. Ohne langweilige Theorie. Nur das, was im echten Einsatz wirklich nützlich ist.

\n\n

Kurze Einführung: Was ist was

\n\n

Syntax Type[] (Array-Literal-Syntax)

\n\n

Dies ist die gebräuchlichste Methode, ein Array in TypeScript zu deklarieren. Sie stammt aus JavaScript und wirkt natürlich:

\n\n
let fruits: string[] = ['apple', 'banana', 'cherry'];\nlet matrix: number[][] = [[1, 2], [3, 4]]; // Array von Arrays
\n\n

Kurz, lesbar, intuitiv. Für 90% der Fälle reicht das aus.

\n\n

Syntax Array<Type> (Generic-Syntax)

\n\n

Dies ist die generische Form, die das eingebaute Interface Array<T> verwendet:

\n\n
let fruits: Array<string> = ['apple', 'banana', 'cherry'];\nlet matrix: Array<Array<number>> = [[1, 2], [3, 4]];
\n\n

Sieht "akademischer" aus, bietet aber in komplexen Szenarien mehr Flexibilität.

\n\n

Die Top-5-Fehler, die selbst erfahrene Entwickler machen

\n\n

Fehler Nr. 1: Blindes Vertrauen in die Autovervollständigung der IDE

\n\n

Ihre IDE kann beide Varianten vorschlagen. Das bedeutet aber nicht, dass sie überall austauschbar sind. Betrachten wir ein Beispiel mit Union-Typen:

\n\n
// So ist es erlaubt\ntype Status = 'active' | 'inactive';\nconst statuses1: Status[] = ['active', 'inactive'];\n\n// Aber so – ein Syntaxfehler!\n// const statuses2: Array<'active' | 'inactive'> = ['active', 'inactive']; \n// ❌ Fehler: ';' expected\n\n// Die korrekte Variante mit Generics:\nconst statuses3: Array<Status> = ['active', 'inactive'];
\n\n

Fazit: Innerhalb von Array<> können komplexe Union-Typen nicht direkt verwendet werden. Lagern Sie sie zuerst in einen separaten Typ aus.

\n\n

Fehler Nr. 2: Verwechslung bei readonly-Arrays

\n\n

Wenn ein Array unveränderlich gemacht werden soll, verhalten sich die Syntaxen unterschiedlich:

\n\n
// ✅ Richtig mit Type[]\nconst readonlyFruits: readonly string[] = ['apple', 'banana'];\n// readonlyFruits.push('orange'); // ❌ Fehler: readonly\n\n// ❌ So funktioniert es nicht:\n// const wrong: readonly Array<string> = ['apple']; \n// Fehler: 'readonly' modifier can only appear on array types\n\n// ✅ Richtig mit Array<> – verwenden Sie ReadonlyArray:\nconst correct: ReadonlyArray<string> = ['apple', 'banana'];
\n\n

Fazit: Verwenden Sie für readonly-Arrays readonly Type[] oder ReadonlyArray<Type>. readonly mit Array<> zu mischen, ist nicht erlaubt.

\n\n

Fehler Nr. 3: Probleme mit mehrstufigen Arrays

\n\n

Wenn ein Array andere Arrays enthält, wird die Syntax Array<> unübersichtlich:

\n\n
// Lesbar und verständlich\nconst grid1: number[][] = [[1, 2], [3, 4]];\n\n// Schon schwieriger zu lesen\nconst grid2: Array<Array<number>> = [[1, 2], [3, 4]];\n\n// Und bei drei Ebenen? Ein Albtraum:\nconst cube: Array<Array<Array<number>>> = [[[1]]]; // 🤯\n\n// Mit Type[] ist es einfacher:\nconst cube2: number[][][] = [[[1]]];
\n\n

Fazit: Verwenden Sie für Arrays mit einer Verschachtelungstiefe von mehr als 2 Type[][]. Ihre Kollegen werden es Ihnen danken.

\n\n

Fehler Nr. 4: Ignorieren des Nutzungskontexts

\n\n

In manchen Frameworks (Angular, React) und Bibliotheken ist ein bestimmter Stil üblich. Das Verletzen der Konvention kann zu Verwirrung führen:

\n\n
// Angular verwendet oft                

Blogs

Buchempfehlungen