Typescript: Hvordan erklærer man et interface, når man også importerer et bibliotek?


Jeg brugte Stackoverflow How do you explicitly set a new property on `window` in TypeScript? til at udvide window. Koden ser således ud:

interface Window { appConfig: any; }
window.appConfig = window.appConfig || {};

Alt fungerer fint.

Når jeg tilføjer linjen

import _ = require('lodash');

Jeg får en fejl

Fejl TS2339: Egenskaben 'appConfig' findes ikke på typen 'Window'.

Hvordan kan jeg løse dette problem?

Jeg arbejder med TypeScript 1.6.2

Svar #1

Når du bruger eksterne moduler, vil interfaces fundet i .ts-filer ikke blive flettet med interfaces fundet i .d.ts-filer. Så i dette tilfælde virker det ikke, fordi Window-interfacet i .ts-filen ikke bliver flettet med Window-interfacet fundet i lib.d.ts. Det skyldes arten af eksterne moduler.

For at rette det, flyt...

interface Window { appConfig: any; }

...ind i en definitionsfil (.d.ts).

Relaterede artikler