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, 

Relaterede artikler