Ce face tipuri pentru Node.js
TypeScript nu conține tipurile pentru Node.js; ele sunt în pachetul @types/node, instalat ca dependență de dezvoltare. După instalare, ai tipuri pentru modulele incluse (node:fs, node:path, node:http, node:crypto…), pentru process, Buffer și pentru globalele Node.js. Alege versiunea pachetului apropiată de versiunea Node.js pe care rulezi.
Opțiunea types din tsconfig controlează ce pachete @types sunt incluse automat ("types": ["node"]). Pentru module ES în Node.js, folosește "module": "nodenext"; prefixul node: în importuri face clar că este un modul inclus în Node.js.
Câteva tipuri de reținut: process.env.X are tipul string | undefined (variabila poate lipsi), process.argv este string[], iar erorile de sistem au tipul NodeJS.ErrnoException, cu proprietatea code ("ENOENT"…). Din Node.js 23, fișierele .ts pot rula direct (Node.js doar șterge tipurile, fără să le verifice).
Exemple
Exemplul 1: Fișiere, căi și variabile de mediu
import { writeFileSync, readFileSync, existsSync } from "node:fs";
import { join } from "node:path";
const fisier = join(".", "elevi.csv");
writeFileSync(fisier, "nume,nota\nAna,10\nMihai,9\n", "utf8");
const randuri = readFileSync(fisier, "utf8").trim().split("\n").slice(1);
const note = randuri.map((r) => Number(r.split(",")[1]));
console.log(existsSync(fisier), note, note.reduce((s, n) => s + n, 0) / note.length);
const port: string | undefined = process.env.PORT_INEXISTENT;
console.log("port:", port ?? "3000 (implicit)", "| argumente:", process.argv.length >= 2);
Rezultat
true [ 10, 9 ] 9.5
port: 3000 (implicit) | argumente: true
Exemplul 2: Eroare de sistem cu cod
import { readFileSync } from "node:fs";
try {
readFileSync("nu-exista.txt", "utf8");
} catch (e) {
const err = e as NodeJS.ErrnoException;
console.log(err.code, err.syscall);
}
Rezultat
ENOENT open
Exemplul 3: process.env poate lipsi
const port: string = process.env.PORT;
console.log(port);
Eroarea afișată de tsc
exemplu.mts(1,7): error TS2322: Type 'string | undefined' is not assignable to type 'string'.
Type 'undefined' is not assignable to type 'string'.
Greșeli frecvente
- Uiți să instalezi
@types/node. tsc dă Cannot find module ‘node:fs’ or its corresponding type declarations sau Cannot find name ‘process’. - Folosești
process.env.PORT!fără verificare. Dacă variabila lipsește, primeștiundefinedla rulare; dă o valoare implicită cu??.
Comenzi înrudite
tipuri pentru DOM: Tipurile pentru pagina web (document, elemente, evenimente) vin din biblioteca dom a TypeScript.module și import/export: Fiecare fișier cu import sau export este un modul; exporți funcții, clase și tipuri și le imporți în alte fișiere.fișiere .d.ts: Fișiere care conțin doar tipuri: descriu codul JavaScript ca să poată fi folosit din TypeScript cu verificare.async/await cu tipuri: O funcție async returnează mereu Promise<T>; await scoate valoarea de tip T din Promise.types: Alege exact ce pachete de tipuri globale (din node_modules/@types) se încarcă automat; [] nu încarcă niciunul.