#1 Penser en termes d’{ensembles (Set)}
#2 Comprendre les types déclarés et les types restreints (narrowed)
#3 Utiliser des unions discriminées plutôt que des champs optionnels
#4 Utiliser des prédicats de type pour éviter les assertions de type
#5 Contrôler la distribution des types union
#6 Vérifier les cas non traités à la compilation grâce à des vérifications exhaustives
#7 Utiliser type plutôt que interface
#8 Utiliser des tuples plutôt que des tableaux lorsque c’est pertinent
#9 Contrôler si le type inféré doit être générique ou spécifique
#10 Utiliser infer pour créer des paramètres de type génériques supplémentaires
#11 Faire preuve de créativité dans la manipulation des types pour rester DRY
Conclusion
6 commentaires
Le point 7 semble avoir été écrit du point de vue de React.
Pour ma part, je préfère
InterfaceàType. C’est aussi une syntaxe présente dans d’autres langages.Moi aussi. Il me semble qu’autrefois, le handbook TypeScript recommandait aussi de privilégier autant que possible les interfaces.
C’est ce contenu.
Tout est bien, mais le point 7, « utiliser
typeplutôt qu'interface», franchement ? On ne peut pas vraiment appeler ça un conseil. Il y a des cas oùinterfaceest plus expressif, par exemple :interface Foo {(b: number): A; (): B}Je ne cherche pas à défendre
type, mais je ne comprends pas bien en quoi l’exemple avec une meilleure expressivité est plus parlant. L’exemple en question ne peut-il pas aussi être exprimé de la même façon avectype?interface Foo {(b: number): A; (): B}
type Foo = {(b: number): A; (): B}
J’ai trouvé dans le livre Effective TypeScript un passage qui résume quand utiliser un type ou une interface, alors je le cite ici.
Si vous êtes sur un projet dont le style n’est pas encore établi, il faut réfléchir à la possibilité d’une extension future. Si vous devez écrire une déclaration de type pour une API, il vaut mieux utiliser une interface. C’est utile, car lorsque l’API évolue, les utilisateurs peuvent fusionner de nouveaux champs via l’interface. En revanche, si une fusion de déclarations se produit sur des types utilisés uniquement en interne dans le projet, c’est le signe d’une mauvaise conception. Dans ce cas, il faut donc utiliser un type.