TypeScriptKonfiguracja tsconfig
"module"
Format modułów w wygenerowanym kodzie i sposób rozumienia importów.
Przykład
#JSON
{
"compilerOptions": {
"module": "NodeNext",
"moduleResolution": "NodeNext"
}
}Definicja i zastosowanie
#Opcja module decyduje, w jakim systemie modułów kompilator zapisze importy i eksporty: jako moduły ES (ESNext, ES2022), CommonJS (CommonJS, czyli require) albo w trybach zgodnych z Node.js (Node16, NodeNext).
W aplikacjach przeglądarkowych z bundlerem najczęściej używa się ESNext razem z moduleResolution: "Bundler". W bibliotekach i projektach uruchamianych bezpośrednio w Node.js zalecane jest NodeNext, które respektuje pole type w package.json i rozszerzenia plików.
Źle dobrane ustawienie objawia się błędami typu „Cannot use import statement outside a module” albo „require is not defined” w działającym programie.
Składnia
#Składnia
"module": "ESNext"Dobre praktyki
#- Dla Node.js wybieraj parę
moduleimoduleResolutionustawioną naNodeNext. - W aplikacjach z Vite lub Next.js zostaw ustawienia z szablonu projektu, są dobrane do bundlera.
Powiązane hasła
#- "moduleResolution"Algorytm, którym kompilator odnajduje pliki wskazane w importach.
- "target"Wersja JavaScriptu, do której kompilator zamienia kod.
- "esModuleInterop"Ułatwia importowanie pakietów CommonJS składnią modułów ES.
- "verbatimModuleSyntax"Importy bez słowa type zostają w JavaScripcie bez zmian, więc importy typów trzeba oznaczać jawnie.
Widzisz błąd albo brakuje przykładu? Napisz do nas.