Ce face export type
Interfețele și aliasurile de tip se exportă ca orice altceva: export interface Elev { ... }, export type Id = number | string. La compilare, aceste exporturi dispar din JavaScript, pentru că tipurile nu există la rulare.
Forma export type { Elev } from "./elevi.mjs" (sau export type { A, B } pentru nume declarate local) spune explicit că se exportă doar tipuri. Este folosită în fișierele „index” care adună tipurile dintr-un pachet. Cu isolatedModules sau verbatimModuleSyntax activate, re-exportul unui tip trebuie marcat cu type, pentru că o unealtă care vede un singur fișier nu poate ști dacă numele este tip sau valoare.
Un nume exportat cu export type nu poate fi folosit ca valoare de cine îl importă, chiar dacă la origine este o clasă.
Exemple
Exemplul 1: Tipuri exportate împreună cu funcțiile
Programul rulează ca un singur fișier; exporturile sunt acolo pentru alte module care l-ar importa.
export type Moneda = "lei" | "euro";
export interface Pret {
suma: number;
moneda: Moneda;
}
export function format(p: Pret): string {
return `${p.suma.toFixed(2)} ${p.moneda}`;
}
class Cos {
produse: Pret[] = [];
}
export type { Cos }; // doar tipul clasei, nu și clasa
const c: Cos = { produse: [{ suma: 12.5, moneda: "lei" }] };
console.log(c.produse.map(format));
Rezultat
[ '12.50 lei' ]
Exemplul 2: Re-export de tipuri într-un fișier index
Fișierul index.mts adună tipurile din alte module. Liniile export type dispar din JavaScript-ul generat; rămâne doar re-exportul funcției format.
// index.mts
export type { Elev } from "./elevi.mjs";
export type { Pret, Moneda } from "./preturi.mjs";
export { format } from "./preturi.mjs";
Fișierul index.mjs generat de tsc
export { format } from "./preturi.mjs";
Greșeli frecvente
- Re-exporți un tip cu
export { Elev } from ...într-un proiect cuisolatedModules. tsc dă Re-exporting a type when ‘isolatedModules’ is enabled requires using ‘export type’. - Exporți o clasă cu
export typeși te miri că alt modul nu o poate instanția.
Comenzi înrudite
import type: Importă doar tipuri; importul dispare complet din JavaScript-ul generat.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.isolatedModules: Dă eroare pentru codul care nu poate fi transformat corect fișier cu fișier (de esbuild, Babel, swc sau Node.js).