Typescript-feil i eksterne npm-avhengigheter


Jeg har en tsconfig.json-fil som ekskluderer:

"exclude": [
  "node_modules",
  "**/*-test.ts",
  "typings/*",
  "**/*.d.ts"
]

Og likevel får jeg følgende feil i mine forsøk på å transpile og lint:

node_modules/aws-sdk/lib/request.d.ts(166,16): feil TS2304: Kan ikke finne navn 'Promise'.

Gir dette mening? Jeg trodde at eventuelle feil i eksterne avhengigheter bør utelukkes basert på ovennevnte utelukkelse.

p.s. koden -- inkludert tredjepartsavhengigheter -- fungerer fint

Svar #1

Delen exclude forteller kompilatoren hvilke filer/mapper som ikke skal kompileres, men hvis en fil som kompileres bruker en fil som er på den ekskluderte listen, vil den fortsatt bli kompilert, eller som det står i dokumentasjonen:

Eventuelle filer som refereres til av filer inkludert via egenskapene "files" eller "include" er også inkludert. På samme måte, hvis en fil B.ts refereres til av en annen fil A.ts, kan ikke B.ts utelukkes med mindre den refererende filen A.ts også er spesifisert i "exclude"-listen.

Hvis du bruker et bibliotek som bruker Promise, bør du heller sikte mot es6, noe som skal få denne feilen til å forsvinne, men hvis du foretrekker å ikke gjøre det, kan du bruke kompilatoralternativet --skipLibCheck som:

Hopp over typekontroll av alle deklarasjonsfiler (*.d.ts)

Rediger

I aws-sdk-js GitHub-lesme-filen, i seksjonen Bruk med TypeScript under Forutsetninger står det tydelig:

Din tsconfig.json eller jsconfig.json inkluderer 'dom' og 'es2015.promise' under compilerOptions.lib

Svar #2

Prøv å legge til følgende kode i tsconfig.json:

"compilerOptions": {
        "lib": [
          "es5",
          "es2015.promise"
        ]
      }

Relaterte artikler