I TypeScript, hvordan kan jeg importere en almindelig JavaScript-fil med en standardeksport ved hjælp af ES6-syntaks?
Lad os sige, at jeg har en fil i mit TypeScript-projekt, som jeg vil have til at være ren JS, af årsager (ikke interesseret i at høre argumenter for, hvorfor det er godt eller dårligt).
Eksempel på Javascript-fil (navngivet foo.js):
export default foo = { prop: 'value' }
Typescript-fil i samme mappe, der bruger ovenstående Javascript-fil
import foo from "./foo";
Når jeg gør dette og prøver at køre TypeScript-kompilatoren, får jeg følgende fejl:
fejl TS7016: Kunne ikke finde en deklarationsfil for modul ''./foo''. ''{fileLocation}/foo.js'' har implicit typen 'any'.
Jeg har læst lidt op på dokumentationen vedrørende deklarationsfiler. I et virkelighedsnært eksempel er foos objektstruktur ikke simpel, og jeg vil IKKE definere dens struktur bare for at bruge den i mit projekt af tidsmæssige årsager.
Er der en enkel og ligetil måde at erklære dette modul som typen any og gå videre med min dag?
Svar #1
Prøv at sætte allowJs i din tsconfig.json fil.
{
"compilerOptions": {
"target": "es5",
"module": "commonjs",
"lib": ["es2015", "dom"],
"strict": true,
"esModuleInterop": true,
"outDir": "dist",
"allowJs": true
}
}
Bortset fra: Din eksempeldefaulteksportsyntaks er ugyldig. Her er et gyldigt eksempel:
export default { prop: 'value' }
Her er en demo for sjov.
Svar #2
Sørg for at oprette en typningsfil foo.d.ts
// foo.d.ts
declare module 'foo';
og sæt noImplicitAny til false i tsconfig.json-filen:
"noImplicitAny": false,
