Global types in typescript
Yes this is possible. You can find all information here: https://www.typescriptlang.org/docs/handbook/declaration-files/templates/global-modifying-module-d-ts.html
The important part is this:
declare global {
/*~ Here, declare things that go in the global namespace, or augment
*~ existing declarations in the global namespace
*/
interface String {
fancyFormat(opts: StringFormatOptions): string;
}
}
I found the accepted answer is not working (maybe it is some configuration that needs to be done?). So with some tinkering, I got it to work for me (maybe I also have some weird configuration option? Let me know if it doesn't work and I will remove this answer).
- Create a definition file in a suitable folder. I will be using
types/global.d.ts
- Check your
tsconfig.json
and include"*": ["types/*.d.ts"]
underpaths
. (You should also be able to directly address the created file if you care to). - Put your global definitions directly into the root of the file NO
declare global
or similar.
Now you should be good to go to use the types declared in this file (tested with typescript 3.9.6 and 3.7.5).
Example file:
// global.d.ts
declare interface Foo {
bar: string;
fooBar: string;
}
What your tsconfig
should look like:
[...]
"paths": {
"*": ["types/*.d.ts"]
},
[...]