26 Punkte von xguru 2023-01-04 | 6 Kommentare | Auf WhatsApp teilen

#1 In Mengen (Set) denken
#2 Deklarierte Typen und eingegrenzte (narrowed) Typen verstehen
#3 Statt optionaler Felder diskriminierte Unions verwenden
#4 Type Assertions mithilfe von Type Predicates vermeiden
#5 Verteilung von Union-Typen steuern
#6 Nicht behandelte Fälle zur Compile-Zeit durch gründliche Prüfungen erkennen
#7 type statt interface verwenden
#8 In passenden Situationen statt Arrays Tupel verwenden
#9 Steuern, ob inferierte Typen allgemein oder spezifisch sind
#10 infer verwenden, um zusätzliche generische Typparameter zu erzeugen
#11 Mit kreativer Typmanipulation DRY bleiben
Fazit

6 Kommentare

 
tested 2023-01-04

Punkt 7 scheint aus der React-Perspektive geschrieben zu sein.
Ich bevorzuge interface gegenüber type. Es ist schließlich auch eine Syntax, die es in anderen Sprachen gibt.

 
alstjr7375 2023-01-04

Ich auch. Ich meine, mich zu erinnern, dass es im TypeScript-Handbook früher auch den Rat gab, nach Möglichkeit bevorzugt Interfaces zu verwenden.

 
bichi 2023-01-04

Alles gut, aber Punkt 7, type statt interface zu verwenden, ist wirklich nötig? Das kann man kaum als Tipp bezeichnen. interface hat in manchen Fällen die bessere Ausdruckskraft, z. B. interface Foo {(b: number): A; (): B}

 
a741593 2023-01-04

Ich möchte zwar nicht für type plädieren, aber ich verstehe das Beispiel mit der besseren Ausdruckskraft nicht so gut. Lässt sich das entsprechende Beispiel nicht auch mit type genauso ausdrücken?

interface Foo {(b: number): A; (): B}
type Foo = {(b: number): A; (): B}

 
harimkims 2023-01-05

Im Buch Effective TypeScript gibt es einen Abschnitt, der zusammenfasst, wann man type und wann interface verwenden sollte, den ich hier zitieren möchte.

Kommen wir zu einem Fazit, wann type und wann interface verwendet werden sollte. Bei komplexen Typen sollte man ohne großes Nachdenken einen Typalias verwenden. Bei einfachen Objekttypen hingegen, die sich sowohl mit type als auch mit interface ausdrücken lassen, sollte man unter den Gesichtspunkten Konsistenz und Erweiterbarkeit entscheiden. Wenn du in einer Codebasis arbeitest, die konsequent interface verwendet, dann nutze interface; wenn dort konsequent type verwendet wird, dann verwende type.

Wenn du an einem Projekt arbeitest, dessen Stil noch nicht festgelegt ist, solltest du überlegen, ob künftig Erweiterungen nötig sein könnten. Wenn du Typdeklarationen für eine bestimmte API schreiben musst, ist interface meist die bessere Wahl. Das ist nützlich, weil Anwender bei Änderungen der API über Interfaces neue Felder zusammenführen können. Wenn es jedoch innerhalb eines Projekts zu Declaration Merging bei intern verwendeten Typen kommt, ist das ein Zeichen für ein schlechtes Design. In solchen Fällen sollte man daher type verwenden.