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.