There might be two issues here:
1.) You need to augment Window
interface in global scope.
Either remove all import
/export
keywords to make the containing file a non-module/script. Or you can use declare global
in a module to mark everything wrapped in it as global declaration:
import { MyCustomGlobal} from './classes';
declare global {
interface Window {
myCustomGlobal: MyCustomGlobal;
}
}
2.) Equally named files, that only differ in their .ts
/.d.ts
extension, don’t work. To quote the docs:
Please note that the compiler does not include files that can be possible outputs; e.g. if the input includes index.ts, then index.d.ts and index.js are excluded. In general, having files that differ only in extension next to each other is not recommended.
Make sure to give a different name to index.d.ts
(like global.d.ts
), so the compiler doesn’t only pick index.ts
. global.d.ts
will included automatically, if placed somewhere in the TS project marked by tsconfig.json
and
if "files"
and "include"
config options are left unspecified.