--- id: afc1ca85-af24-4ef6-bcd8-91193c4fbd32 title: lib.d.ts --- # Introduction This is where TypeScript "cheats" and ships with a file called [lib.d.ts](https://github.com/microsoft/TypeScript/blob/master/lib/lib.d.ts). This file contains ambient declarations for a whole bunch of common [JavaScript](20200613170905-javascript) constructs present in JavaScript runtimes and the DOM. - This file is automatically included in the compilation context of a TypeScript project. - The objective of this file is to make it easy for you to start writing type checked JavaScript code. # Modifying Native Types If you want to be a clever clogs you can add stuff to the interfaces in lib.d.ts by creating a global module (ie: `global.d.ts`) # Example ## lib.d.ts magic The following code is only possible because of lib.d.ts. If it's used with the `nolib` option, TypeScript doesn't know that all JavaScript objects have a `toString` function. var foo = 123; var bar = foo.toString(); ## Example of what's in the lib.d.ts ``` typescript declare var window: Window; interface Window extends EventTarget, WindowTimers, WindowSessionStorage, WindowLocalStorage, WindowConsole, GlobalEventHandlers, IDBEnvironment, WindowBase64 { animationStartTime: number; applicationCache: ApplicationCache; clientInformation: Navigator; closed: boolean; crypto: Crypto; // so on and so forth... } ```