Texte générée par IA :)
|
May 22
Dans le monde du développement web, JavaScript est omniprésent, mais ses limitations, notamment l'absence de typage statique, peuvent rendre les projets complexes difficiles à maintenir. C'est ici que TypeScript, un sur-ensemble de JavaScript développé par Microsoft, entre en jeu. En ajoutant des types et d'autres fonctionnalités avancées, TypeScript permet d'écrire un code plus robuste et plus lisible, tout en restant compatible avec JavaScript.
Pourquoi des Types ?
Les types permettent de détecter les erreurs avant même l'exécution du code. Cela réduit les bogues et améliore la documentation du code en rendant les intentions des développeurs explicites.
Typage des Variables et Fonctions
let age: number = 25;
let name: string = "Alice";
let isActive: boolean = true;
// Erreur : TypeScript détecte les assignations invalides
// age = "25"; // ❌ Erreur
function add(a: number, b: number): number {
return a + b;
}
// Exemple valide
add(5, 10); // ✅
// Exemple invalide
// add("5", 10); // ❌ Erreur
Avantages Clés
Interfaces et Types
TypeScript propose des interfaces et des types pour modéliser des structures complexes.
interface User {
id: number;
name: string;
isAdmin: boolean;
}
const user: User = {
id: 1,
name: "Alice",
isAdmin: false,
};
Type Union et Intersection
Les types unions permettent d'accepter plusieurs types possibles.
type Status = "success" | "error" | "loading";
function displayStatus(status: Status) {
console.log(status);
}
displayStatus("success"); // ✅
// displayStatus("invalid"); // ❌ Erreur
interface Admin {
isAdmin: true;
}
type AdminUser = User & Admin;
const adminUser: AdminUser = {
id: 2,
name: "Bob",
isAdmin: true,
};
Généricité
Les génériques permettent d'écrire des fonctions ou des composants réutilisables tout en conservant une forte typabilité.
function getArray<T>(items: T[]): T[] {
return [...items];
}
const numbers = getArray<number>([1, 2, 3]);
const strings = getArray<string>(["a", "b", "c"]);
TypeScript avec React
TypeScript s'intègre parfaitement avec React pour typer les composants et les hooks.
interface ButtonProps {
label: string;
onClick: () => void;
}
const Button: React.FC<ButtonProps> = ({ label, onClick }) => (
<button onClick={onClick}>{label}</button>
);
// Utilisation
<Button label="Click me" onClick={() => console.log("Clicked")} />;
TypeScript avec Next.js
Next.js prend en charge TypeScript nativement. Voici un exemple de typage pour getServerSideProps :
import { GetServerSideProps } from "next";
interface Props {
data: string;
}
export const getServerSideProps: GetServerSideProps<Props> = async () => {
return {
props: { data: "Hello from server" },
};
};
const Page: React.FC<Props> = ({ data }) => <div>{data}</div>;
export default Page;
Configuration TypeScript
Un simple fichier tsconfig.json permet de configurer votre projet.
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"strict": true,
"jsx": "react"
}
}
TypeScript est bien plus qu'un simple superset de JavaScript : c'est un outil puissant qui révolutionne la manière dont les développeurs construisent des applications web. Grâce à son typage statique, ses outils avancés comme les interfaces, les génériques, et son intégration avec des frameworks modernes comme React ou Next.js, TypeScript est devenu un incontournable pour les projets professionnels.
Si vous n'utilisez pas encore TypeScript, commencez par l'ajouter progressivement à vos projets JavaScript. Vous découvrirez rapidement une amélioration significative en termes de productivité, de maintenabilité et de qualité de code. Avec TypeScript, vous codez en toute confiance !