Typescript: Přidání funkcí do "window" pomocí souboru ".d.ts"
Mám starou *.js aplikaci a chci její části přenést do TypeScriptu.
Zatím jsem našel definice @types pro většinu používaných balíčků, ale do objektu window byla přidána globální funkce.
Podařilo se mi opravit chybu kompilace přidáním tohoto na začátek souboru *.ts:
declare global {
interface Window {
openConformationModal?: any;
}
}
Teď samozřejmě nechci zahrnout toto do všech svých *.ts souborů, takže jsem chtěl přidat to do *.d.ts souboru, aby to bylo rozpoznáno ve všech balíčcích.
Problém je, že pokud přidám stejný soubor například do souboru window.d.ts, není rozpoznán. Vím, že typy ve složce jsou nalezeny, protože jsem je přidal pomocí
{
...,
"compilerOptions": {
....
"typeRoots": [
"FFOLDERPATH_TO_D_TS_FILE"
]
}
}
a je zde další *.d.ts, který byl nalezen.
PS: Řešení je založeno na Jak explicitně nastavit novou vlastnost na `window` v TypeScriptu?
Odpověď č. 1
Našel jsem to dále v této otázce: https://stackoverflow.com/a/40698148
interface Window {
MyNamespace: any;
}
Úplná odpověď:
Tady je návod, jak to udělat, pokud používáte TypeScript Definition Manager!
npm install typings --global
Vytvořte typings/custom/window.d.ts:
interface Window {
MyNamespace: any;
}
declare var window: Window;
Nainstalujte své vlastní psaní:
typings install file:typings/custom/window.d.ts --save --global
Hotovo, použijte to! Typescript už si nebude stěžovat:
window.MyNamespace = window.MyNamespace || {};
