allowUmdGlobalAccess în TypeScript

Permite folosirea unei biblioteci UMD ca variabilă globală dintr-un fișier care este modul (are import/export).

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

Ce face allowUmdGlobalAccess

O bibliotecă UMD poate fi folosită în două feluri: importată ca modul sau încărcată cu <script>, caz în care creează o variabilă globală. Declarațiile ei de tip conțin export as namespace Nume. Implicit, TypeScript permite variabila globală doar în fișierele care nu sunt module; într-un modul cere un import (eroarea TS2686).

Cu allowUmdGlobalAccess, variabila globală poate fi folosită și din module. Este util când biblioteca chiar este încărcată global în pagină (de exemplu dintr-un CDN), dar codul tău este scris în module. Implicit: false.

Parametri

Parametru Descriere
true Variabila globală a unei biblioteci UMD poate fi folosită în module.
false Valoarea implicită.

Exemple

Exemplul 1: Biblioteca Calc folosită global

calc.d.ts descrie o bibliotecă UMD. Fișierul index.ts are export, deci este modul, iar accesul global dă eroare. Cu --allowUmdGlobalAccess, compilarea trece.

// tsconfig.json
{
  "compilerOptions": {
    "noEmit": true,
    "module": "esnext",
    "moduleResolution": "bundler"
  }
}

// calc.d.ts
export function aduna(a: number, b: number): number;
export as namespace Calc;

// index.ts
/// <reference path="./calc.d.ts" />
export const total = Calc.aduna(2, 3);

Rezultat (tsc 5.9)

$ npx tsc
index.ts(2,22): error TS2686: 'Calc' refers to a UMD global, but the current file is a module. Consider adding an import instead.

$ npx tsc --allowUmdGlobalAccess

Greșeli frecvente

  • Să pornești opțiunea când biblioteca nu este încărcată global la rulare. tsc trece, iar în browser apare ReferenceError: Calc is not defined.

Comenzi înrudite

  • types: Alege exact ce pachete de tipuri globale (din node_modules/@types) se încarcă automat; [] nu încarcă niciunul.
  • moduleDetection: Decide când un fișier este modul (cu scope propriu) și când este script global; force face din fiecare fișier un modul.
  • esModuleInterop: Face importul implicit (import x from „pachet”) al modulelor CommonJS să funcționeze corect, la verificare și la rulare.