export - TypeScript 2.1 gränssnittssammanslagning med import från


Jag har en utökning för Window-gränssnittet, ser ut så här:

import IStuff from "Stuff/IStuff";

interface Window {
  Stuff: IStuff;
}

export default Window;

Jag vill använda Stuff-tillägget i en annan fil genom att importera filen ovan så här:

import Window from WindowExtension;

class StuffApp {

  public doStuff() {
    window.Stuff.doStuff();

  }

}

Kompilatorn misslyckas med "Property 'Stuff' finns inte på typen 'Window'; Vad gör jag fel? Dessutom är det mycket viktigt att kunna använda denna tillägg på något sätt från andra projekt.

Tack, grabbar!

Svar #1

Följande kod utökar inte det globala fönstret

import IStuff from "Stuff/IStuff";

interface Window {
  Stuff: IStuff;
}

export default Window;

Det exporterar faktiskt ett nytt fönstergränssnitt eftersom filen är en modul (på grund av importen). Mer https://basarat.gitbooks.io/typescript/docs/project/modules.html

Riktig fix

import IStuff from "Stuff/IStuff";



  interface MyWindow extends Window {
    Stuff: IStuff;
  }


export default (window as MyWindow)

Och sedan använda

import MyWindow from WindowExtension;

class StuffApp {

  public doStuff() {
    MyWindow.Stuff.doStuff();

  }

}