Collectives™ on Stack Overflow

Find centralized, trusted content and collaborate around the technologies you use most.

Learn more about Collectives

Teams

Q&A for work

Connect and share knowledge within a single location that is structured and easy to search.

Learn more about Teams

I'm having a legacy *.js application and want to port parts of it to typescript.

So far I found @types definitions for most of the used packages, but there is a global function added to the window object.

I was able to fix the compilation error by addind this at the beginning of the *.ts File:

declare global {
    interface Window {
        openConformationModal?: any;

Now obv I don't want to include this in all my *.ts so I wanted to added it to a *.d.ts file so it is recogniced in all packages.

The problem is, that if I add the same file to a e.g. window.d.ts file, it isn't recogniced. I know that the types in the folder are found because I a added it with

"compilerOptions": { "typeRoots": [ "FFOLDERPATH_TO_D_TS_FILE"

and there is another *.d.ts which is found.

PS: Solution is based on How do you explicitly set a new property on `window` in TypeScript?

I found it further down this question: https://stackoverflow.com/a/40698148

interface Window {
  MyNamespace: any;
  

Full answer:

Here's how to do it, if you're using TypeScript Definition Manager!

npm install typings --global

Create typings/custom/window.d.ts:

interface Window {
  MyNamespace: any;
declare var window: Window;

Install your custom typing:

typings install file:typings/custom/window.d.ts --save --global

Done, use it‌! Typescript won't complain anymore:

window.MyNamespace = window.MyNamespace || {};
                This is the perfect usecase for npx as in npx typings install file:typings/custom/window.d.ts --save --global so you don't have to install and maintain version of the typings library locally
– Patrick
                Sep 12, 2019 at 16:03
        

Thanks for contributing an answer to Stack Overflow!

  • Please be sure to answer the question. Provide details and share your research!

But avoid

  • Asking for help, clarification, or responding to other answers.
  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.