"esModuleInterop"

Ułatwia importowanie pakietów CommonJS składnią modułów ES.

Na tej stronie

Przykład

#
JSON
{
  "compilerOptions": {
    "esModuleInterop": true,
    "module": "CommonJS"
  }
}

Definicja i zastosowanie

#

Wiele starszych pakietów npm jest napisanych w CommonJS (module.exports = …). Opcja esModuleInterop pozwala importować je zwykłą składnią import express from "express", zamiast import * as express from "express".

Kompilator dodaje wtedy do wygenerowanego kodu drobne funkcje pomocnicze, które zachowują się tak jak bundlery i Node.js przy łączeniu obu systemów modułów.

Włączenie esModuleInterop automatycznie włącza też allowSyntheticDefaultImports, które pozwala na import domyślny z modułu bez eksportu domyślnego na etapie sprawdzania typów.

Składnia

#
Składnia
"esModuleInterop": true

Więcej przykładów

#
Import pakietu CommonJS
TypeScript
// z esModuleInterop
import express from 'express'

// bez esModuleInterop trzeba było pisać:
// import * as express from 'express'

Dobre praktyki

#
  • W nowych projektach zostaw esModuleInterop włączone. To ustawienie domyślne w szablonach tsc --init.
  • Jeśli import domyślny zwraca undefined w działaniu, sprawdź tę opcję i format modułów pakietu.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.