stripInternal în TypeScript

Scoate din fișierele .d.ts declarațiile marcate cu /** @internal */, ca să nu apară în API-ul public.

Sintaxă
"compilerOptions": {
  "declaration": true,
  "stripInternal": true
}

Ce face stripInternal

Uneori o funcție trebuie exportată ca s-o folosești din alte fișiere ale bibliotecii, dar nu vrei ca utilizatorii să o vadă. Cu stripInternal, declarațiile care au comentariul JSDoc /** @internal */ nu sunt scrise în .d.ts.

Codul JavaScript rămâne neschimbat: funcția există și poate fi apelată. Doar tipurile ei sunt ascunse. Opțiunea nu este documentată oficial ca stabilă și trebuie folosită cu atenție. Implicit: false.

Parametri

Parametru Descriere
true Declarațiile cu @internal lipsesc din .d.ts.
false Valoarea implicită.

Exemple

Exemplul 1: O funcție internă ascunsă

rotunjeste lipsește din index.d.ts, dar există în index.js.

// tsconfig.json
{
  "compilerOptions": {
    "target": "es2022",
    "module": "nodenext",
    "declaration": true,
    "stripInternal": true,
    "outDir": "dist"
  }
}

// src/index.ts
/** Calculează totalul coșului. */
export function total(preturi: number[]): number {
  return rotunjeste(preturi.reduce((s, p) => s + p, 0));
}

/** @internal */
export function rotunjeste(x: number): number {
  return Math.round(x * 100) / 100;
}

Rezultat (tsc 5.9)

$ npx tsc && cat dist/index.d.ts
/** Calculează totalul coșului. */
export declare function total(preturi: number[]): number;

$ cat dist/index.js
/** Calculează totalul coșului. */
export function total(preturi) {
    return rotunjeste(preturi.reduce((s, p) => s + p, 0));
}
/** @internal */
export function rotunjeste(x) {
    return Math.round(x * 100) / 100;
}

Greșeli frecvente

  • Să marchezi cu @internal un tip folosit într-o declarație publică. .d.ts-ul rezultat trimite la un tip care lipsește.
  • Să scrii // @internal. Trebuie să fie comentariu JSDoc: /** @internal */.

Comenzi înrudite

  • declaration: Generează lângă fiecare fișier .js un fișier .d.ts cu tipurile lui, ca alte proiecte să-l poată folosi cu tipuri.
  • removeComments: Scoate comentariile din fișierele .js generate (și din .d.ts).