deno - tsc kompilerer TypeScript som importerer ved bruk av filendelse
Jeg skriver TypeScript-koden min på en økosystem-uavhengig måte. Jeg bestemte meg for å inkludere filendelser i imports, i samsvar med weben og Deno.
import xyz from "./foo.ts";
Hvordan kan jeg få TypeScript-kompilatoren (tsc) til å kompilere disse filene uten følgende feil:
error TS2691: An import path cannot end with a '.ts' extension.
Jeg har så langt prøvd følgende i min tsconfig.json uten hell:
{
"compilerOptions": {
"paths": {
"*.js": ["*"],
"*.ts": ["*"]
},
...
},
...
}
Svar #1
Du kan kompilere uten feil ved å fortelle tsc å ignorere alle slike import-setninger.
// @ts-ignore
import xyz from "./foo.ts";
For å forstå hvorfor du ikke kan konfigurere deg ut av det, må vi grave inn i de underliggende årsakene til hvorfor TypeScript ikke vil at du skal bruke .ts-utvidelsen inne i import-setningen.
tsc skriver ikke om modulfilnavnene, så hvis du gir det
import xyz from "./foo.ts"
det produserer ikke en foo.js-fil, og den resulterende kompilerte ECMAScript (uansett hvilken versjon du spesifiserer) sier fortsatt å importere ./module.ts. Siden poenget med å kompilere til ECMAScript er å kvitte seg med TypeScript-filene, er det å referere til en .ts-fil i outputen åpenbart ikke bra.
Det du ønsker har blitt tatt opp i TypeScript GitHub-issues (se #27481, #11901). Du kan vurdere å bli med i diskusjonen på GitHub.
Svar #2
Jeg bruker for øyeblikket TypeScript-kompilator-APIen (for øyeblikket i beta) for å løse dette problemet... jeg vil legge ut flere detaljer snart.
