skipLibCheck în TypeScript

Nu mai verifică erorile din fișierele .d.ts (ale pachetelor și ale proiectului); compilarea devine mai rapidă.

Sintaxă
"compilerOptions": { "skipLibCheck": true }

tsc --skipLibCheck

Ce face skipLibCheck

Fișierele .d.ts din node_modules sunt verificate și ele implicit. Pachete diferite pot declara același lucru în feluri incompatibile, iar versiuni vechi de @types pot avea greșeli care nu țin de codul tău. Cu skipLibCheck, tsc nu mai raportează erorile din interiorul fișierelor .d.ts. Tipurile lor sunt folosite în continuare pentru a-ți verifica propriul cod.

Este pornită în aproape toate proiectele (tsc --init o scrie) și scurtează vizibil compilarea. Riscul: o declarație greșită dintr-un pachet rămâne neobservată. skipDefaultLibCheck este varianta mai îngustă: sare doar peste fișierele .d.ts marcate ca biblioteci implicite (/// <reference no-default-lib="true"/>, adică lib.*.d.ts ale lui TypeScript). Ambele sunt implicit false.

Parametri

Parametru Descriere
skipLibCheck: true Nu se verifică niciun fișier .d.ts.
skipDefaultLibCheck: true Nu se verifică bibliotecile standard (lib.*.d.ts).

Exemple

Exemplul 1: Declarații cu greșeli

tipuri/vechi.d.ts are două greșeli. Cu --skipLibCheck nu mai sunt raportate. --skipDefaultLibCheck nu le ascunde, pentru că fișierul nu este o bibliotecă standard.

// tsconfig.json
{
  "compilerOptions": {
    "module": "nodenext",
    "target": "es2022",
    "noEmit": true
  }
}

// tipuri/vechi.d.ts
declare const OPTIUNI: Map<string>;
interface Window { titlu: number }
interface Window { titlu: string }

// index.ts
console.log("Bună");

Rezultat (tsc 5.9)

$ npx tsc
tipuri/vechi.d.ts(1,24): error TS2314: Generic type 'Map<K, V>' requires 2 type argument(s).
tipuri/vechi.d.ts(3,20): error TS2717: Subsequent property declarations must have the same type.  Property 'titlu' must be of type 'number', but here has type 'string'.

$ npx tsc --skipLibCheck

$ npx tsc --skipDefaultLibCheck
tipuri/vechi.d.ts(1,24): error TS2314: Generic type 'Map<K, V>' requires 2 type argument(s).
tipuri/vechi.d.ts(3,20): error TS2717: Subsequent property declarations must have the same type.  Property 'titlu' must be of type 'number', but here has type 'string'.

Greșeli frecvente

  • Să crezi că skipLibCheck ascunde erorile din codul tău care folosește un pachet. Le ascunde doar pe cele din interiorul fișierelor .d.ts.
  • Să scrii fișiere .d.ts proprii cu skipLibCheck pornit și să nu observi greșelile din ele. Verifică-le din când în când cu --skipLibCheck false.

Comenzi înrudite

  • types: Alege exact ce pachete de tipuri globale (din node_modules/@types) se încarcă automat; [] nu încarcă niciunul.
  • typeRoots: Alege directoarele din care tsc încarcă automat pachetele de tipuri globale (implicit node_modules/@types).
  • lib: Alege ce declarații de tipuri pentru mediul de rulare sunt incluse: versiunea JavaScript (es2022) și API-urile (dom, webworker).
  • diagnostics: Afișează după compilare statistici: câte fișiere, rânduri și tipuri, memoria folosită și timpul fiecărei etape.