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
