Accueil / Articles / TypeScript ne transforme pas une ingénierie faible en ingénierie forte.

TypeScript ne transforme pas une ingénierie faible en ingénierie forte.

Les types stricts aident, mais des limites inexistantes ou de mauvaise qualité, ainsi que des règles de domaine non testées, continuent d’être intégrées — l’ingénierie l’emporte sur la syntaxe.

804 mots

La sécurité des types n’est pas synonyme de qualité logicielle

TypeScript permet d’éviter une catégorie importante de bogues. Il ne prévient pas pour autant des conceptions faibles, des modèles de domaine peu clairs ou un comportement en temps de exécution négligent.

function transferMoney(
  from: Account,
  to: Account,
  amount: number
) {
    from.balance -= amount;
    to.balance += amount;
}
const user: any = fetchUser();
user.address.street.foo.bar();
interface User {}
interface UserResponse {}interface UserData {}interface UserDTO {}interface UserPayload {}interface UserState {}

TypeScript ne comprend pas la logique métier

Les compilateurs ne peuvent pas déterminer si une règle de cumul de remises est équitable. Les types servent à définir des structures ; les tests et les invariants restent nécessaires de la part des humains.

Le type le plus dangereux est any

any désactive l’aide que vous devriez obtenir du compilateur. Préférez unknown associé à des opérations de restriction, ou des unions précises.

Les types forts ne peuvent pas sauver une architecture faible

L’organisation en couches, les limites entre composants et les interfaces de module sont plus importants que de simplement recouvrir une architecture désorganisée d’interfaces.

Les types décrivent la réalité

Les modèles doivent correspondre au domaine. Les types trompeurs qui affirment une valeur non nulle alors que les API renvoient null créent une fausse confiance.

Les mauvaises habitudes se propagent plus rapidement en TypeScript

La copie-collage de DTO, les types trop généraux et l’usage excessif d’assertions se répandent rapidement sous prétexte de “typage”.

Les meilleurs développeurs en TypeScript étaient déjà des développeurs JavaScript méticuleux

La discipline précède la syntaxe. TypeScript amplifie les habitudes, qu’elles soient bonnes ou mauvaises.

Utilisez le compilateur comme partenaire

Activez la stricteur, résolvez les causes profondes et laissez les erreurs guider les refacteurs plutôt que de les ignorer.

La véritable amélioration n’est pas TypeScript

L’amélioration réside dans des modules plus clairs, des règles de domaine testées et des types honnêtes. TypeScript n’est qu’un outil pour cette démarche — pas un substitut.

Activez noImplicitAny et strictNullChecks avant d’aborder les guides de style ; ces deux paramètres détectent plus de bugs réels que les conventions de nommage.

Associez les DTO aux frontières avec des mappers — ne laissez pas les structures de persistance s’infiltrer dans les composants UI juste parce que tous deux sont « typés ».

Activez noImplicitAny et strictNullChecks avant d’aborder les guides de style ; ces deux paramètres détectent plus de bugs réels que les conventions de nommage.

Associez les DTO aux frontières avec des mappers — ne laissez pas les structures de persistance s’infiltrer dans les composants UI juste parce que tous deux sont « typés ».

Activez noImplicitAny et strictNullChecks avant d’aborder les guides de style ; ces deux paramètres détectent plus de bugs réels que les conventions de nommage.

Associez les DTO aux frontières avec des mappers — ne laissez pas les structures de persistance s’infiltrer dans les composants UI juste parce que tous deux sont « typés ».

Activez noImplicitAny et strictNullChecks avant d’aborder les guides de style ; ces deux paramètres détectent plus de bugs réels que les conventions de nommage.

Associez les DTO aux frontières avec des mappers — ne laissez pas les structures de persistance s’infiltrer dans les composants UI juste parce que tous deux sont « typés ».

Activez noImplicitAny et strictNullChecks avant d’aborder les guides de style ; ces deux paramètres détectent plus de bugs réels que les conventions de nommage.

Associez les DTO aux frontières avec des mappers — ne laissez pas les structures de persistance s’infiltrer dans les composants UI juste parce que tous deux sont « typés ».

Activez noImplicitAny et strictNullChecks avant d’aborder les guides de style ; ces deux paramètres détectent plus de bugs réels que les conventions de nommage.

Associez les DTO aux frontières avec des mappers — ne laissez pas les structures de persistance s’infiltrer dans les composants UI juste parce que tous deux sont « typés ».

Activez noImplicitAny et strictNullChecks avant d’aborder les guides de style ; ces deux paramètres détectent plus de bugs réels que les conventions de nommage.

Associez les DTO aux frontières avec des mappers — ne laissez pas les structures de persistance s’infiltrer dans les composants UI juste parce que tous deux sont « typés ».

Activez noImplicitAny et strictNullChecks avant d’aborder les guides de style ; ces deux paramètres détectent plus de bugs réels que les conventions de nommage.

Associez les DTO aux frontières avec des mappers — ne laissez pas les structures de persistance s’infiltrer dans les composants UI juste parce que tous deux sont « typés ».

Activez noImplicitAny et strictNullChecks avant d’aborder les guides de style ; ces deux paramètres détectent plus de bugs réels que les conventions de nommage.

Associez les DTO aux frontières avec des mappers — ne laissez pas les structures de persistance s’infiltrer dans les composants UI juste parce que tous deux sont « typés ».

Activez noImplicitAny et strictNullChecks avant d’aborder les guides de style ; ces deux paramètres détectent plus de bugs réels que les conventions de nommage.

Associez les DTO aux frontières avec des mappers — ne laissez pas les structures de persistance s’infiltrer dans les composants UI juste parce que tous deux sont « typés ».

Activez noImplicitAny et strictNullChecks avant d’aborder les guides de style ; ces deux paramètres détectent plus de bugs réels que les conventions de nommage.

Associez les DTO aux frontières avec des mappers — ne laissez pas les structures de persistance s’infiltrer dans les composants UI juste parce que tous deux sont « typés ».

Activez noImplicitAny et strictNullChecks avant d’aborder les guides de style ; ces deux paramètres détectent plus de bugs réels que les conventions de nommage.

Associez les DTO aux frontières avec des mappers — ne laissez pas les structures de persistance s’infiltrer dans les composants UI juste parce que tous deux sont « typés ».

Activez noImplicitAny et strictNullChecks avant d’aborder les guides de style ; ces deux paramètres détectent plus de bugs réels que les conventions de nommage.

Associez les DTO aux frontières avec des mappers — ne laissez pas les structures de persistance pénétrer dans les composants UI juste parce que tous deux sont « typés ».