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();
}
}
