TypeScript et PostgreSQL : guide complet pour créer un backend fiable

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi TypeScript et PostgreSQL sont le duo idéal pour votre projet

\n\n

Avez-vous déjà réfléchi à la raison pour laquelle les développeurs choisissent de plus en plus la combinaison TypeScript et PostgreSQL ? Ce n'est pas simplement une tendance à la mode – c'est un tandem puissant qui change les règles du jeu dans le développement web moderne. Imaginez un couteau suisse et un coffre-fort fiable en un seul produit : TypeScript apporte rigueur et prévisibilité au code, tandis que PostgreSQL offre fiabilité et flexibilité pour le stockage des données.

\n\n

Dans ce guide, nous ne nous contenterons pas de survoler la théorie. Nous plongerons dans la pratique réelle : configurer la connexion, écrire des requêtes, créer une API et comprendre comment éviter les erreurs typiques. Prêt ? C'est parti !

\n\n

Configuration de l'environnement : par où commencer avec TypeScript et PostgreSQL

\n\n

Avant d'écrire du code, préparons le terrain. L'installation des dépendances, c'est comme les fondations d'une maison : plus elles sont solides, plus le projet durera longtemps.

\n\n

Installation des paquets nécessaires

\n\n

Nous aurons besoin de deux outils principaux : pg (client pour PostgreSQL) et typescript avec les types. Exécutez dans le terminal :

\n\n
npm init -y\nnpm install pg\nnpm install -D typescript @types/node @types/pg\nnpx tsc --init\n
\n\n

Remarque : nous installons les types pour pg séparément. C'est une condition obligatoire pour travailler avec une base de données TypeScript – sinon le compilateur se plaindra de l'absence de types.

\n\n

Structure de base du projet

\n\n

Créez un fichier database.ts – ce sera le cœur de notre connexion. Voici un modèle minimal mais fonctionnel :

\n\n
import { Pool } from 'pg';\n\nconst pool = new Pool({\n  user: 'your_username',\n  host: 'localhost',\n  database: 'your_database',\n  password: 'your_password',\n  port: 5432,\n});\n\nexport default pool;\n
\n\n

Pourquoi Pool et pas un client ordinaire ? Pool gère un pool de connexions, ce qui est crucial pour la production. Imaginez que chaque requête est un visiteur de café. Sans pool, vous ouvririez un nouveau café pour chaque client. Avec un pool, vous avez déjà plusieurs tables et vous installez simplement les invités.

\n\n

Opérations de base : CRUD en TypeScript avec PostgreSQL

\n\n

Maintenant, le plus intéressant – l'écriture de requêtes. Nous allons créer une table utilisateurs simple et implémenter les quatre opérations : Create, Read, Update, Delete.

\n\n

Création de la table

\n\n

Avant de travailler avec les données, il faut créer la structure. Voici comment faire via TypeScript :

\n\n
import pool from './database';\n\nasync function createTable() {\n  const query = `\n    CREATE TABLE IF NOT EXISTS users (\n      id SERIAL PRIMARY KEY,\n      name VARCHAR(100) NOT NULL,\n      email VARCHAR(255) UNIQUE NOT NULL,\n      age INTEGER CHECK (age > 0),\n      created_at TIMESTAMP DEFAULT NOW()\n    );\n  `;\n  \n  try {\n    await pool.query(query);\n    console.log('Table users créée');\n  } catch (error) {\n    console.error('Erreur :', error);\n  }\n}\n\ncreateTable();\n
\n\n

Remarquez SERIAL – c'est un auto-incrément que PostgreSQL génère lui-même. Et CHECK garantit que l'âge sera positif. C'est un exemple de la façon dont PostgreSQL TypeScript assurent ensemble l'intégrité des données à deux niveaux.

\n\n

Ajout de données (Create)

\n\n

L'insertion avec paramètres est une méthode sûre pour éviter les injections SQL :

\n\n
interface User {\n  name: string;\n  email: string;\n  age: number;\n}\n\nasync function addUser(user: User) {\n  const query = `\n    INSERT INTO users (name, email, age)\n    VALUES ($1, $2, $3)\n    RETURNING *;\n  `;\n  \n  const values = [user.name, user.email, user.age];\n  \n  try {\n    const result = await pool.query(query, values);\n    console.log('Utilisateur ajouté :', result.rows[0]);\n    return result.rows[0];\n  } catch (error) {\n    console.error('Erreur lors de l\\'ajout :', error);\n    throw error                

Blogs

Book Recommendations