Vanjski modul bez import izjave u Typescriptu


U trenutku kada dodate import izjavu u svoju Typescript datoteku, ta se datoteka smatra vanjskim modulom. Dakle, ovo nije problem:

Datoteka.1.ts

import { Type } from '...';
let whatever = 123;
...

Datoteka.2.ts

import { Type } from '...';
let whatever = 234;
...

Dakle, ovo radi. Ali u trenutku kada se uklone te dvije import izjave, ti se fajlovi više ne smatraju modulima i obje varijable s istim imenom postaju globalne i međusobno se ometaju.

Pitanje

Kako se prinudno modularizira izvorna datoteka koja nema nikakve import izjave?

Odgovor #1

Potrebno je importirati ili exportirati nešto. Predlažem da exportirate vrijednost undefined:

export let undefined;

Kompajler ne generira kod za ovu naredbu.

Odgovor #2

Od TypeScript 4.7, ovo je riješeno putem "moduleDetection": "force" u vašem tsconfig.json:

{
  "compilerOptions": {
    // ... Various options here, such as module ...
    "moduleDetection": "force"
  }
}   

Referenca: https://www.typescriptlang.org/tsconfig#moduleDetection

Izvorni Github problem koji je doveo do ove konfiguracije: https://github.com/microsoft/TypeScript/issues/14279

Povezani članci