# TypeScript Deep Dive

## TypeScript Deep Dive

- [README](https://basarat.gitbook.io/typescript/readme.md)
- [Getting Started](https://basarat.gitbook.io/typescript/getting-started.md)
- [Why TypeScript](https://basarat.gitbook.io/typescript/getting-started/why-typescript.md)
- [JavaScript](https://basarat.gitbook.io/typescript/recap.md)
- [Equality](https://basarat.gitbook.io/typescript/recap/equality.md)
- [References](https://basarat.gitbook.io/typescript/recap/references.md)
- [Null vs. Undefined](https://basarat.gitbook.io/typescript/recap/null-undefined.md)
- [this](https://basarat.gitbook.io/typescript/recap/this.md)
- [Closure](https://basarat.gitbook.io/typescript/recap/closure.md)
- [Number](https://basarat.gitbook.io/typescript/recap/number.md)
- [Truthy](https://basarat.gitbook.io/typescript/recap/truthy.md)
- [Future JavaScript Now](https://basarat.gitbook.io/typescript/future-javascript.md)
- [Classes](https://basarat.gitbook.io/typescript/future-javascript/classes.md)
- [Classes Emit](https://basarat.gitbook.io/typescript/future-javascript/classes/classes-emit.md)
- [Arrow Functions](https://basarat.gitbook.io/typescript/future-javascript/arrow-functions.md)
- [Rest Parameters](https://basarat.gitbook.io/typescript/future-javascript/rest-parameters.md)
- [let](https://basarat.gitbook.io/typescript/future-javascript/let.md)
- [const](https://basarat.gitbook.io/typescript/future-javascript/const.md)
- [Destructuring](https://basarat.gitbook.io/typescript/future-javascript/destructuring.md)
- [Spread Operator](https://basarat.gitbook.io/typescript/future-javascript/spread-operator.md)
- [for...of](https://basarat.gitbook.io/typescript/future-javascript/for...of.md)
- [Iterators](https://basarat.gitbook.io/typescript/future-javascript/iterators.md)
- [Template Strings](https://basarat.gitbook.io/typescript/future-javascript/template-strings.md)
- [Promise](https://basarat.gitbook.io/typescript/future-javascript/promise.md)
- [Generators](https://basarat.gitbook.io/typescript/future-javascript/generators.md)
- [Async Await](https://basarat.gitbook.io/typescript/future-javascript/async-await.md)
- [Project](https://basarat.gitbook.io/typescript/project.md)
- [Compilation Context](https://basarat.gitbook.io/typescript/project/compilation-context.md)
- [tsconfig.json](https://basarat.gitbook.io/typescript/project/compilation-context/tsconfig.md)
- [Which Files?](https://basarat.gitbook.io/typescript/project/compilation-context/files.md)
- [Declaration Spaces](https://basarat.gitbook.io/typescript/project/declarationspaces.md)
- [Modules](https://basarat.gitbook.io/typescript/project/modules.md)
- [File Module Details](https://basarat.gitbook.io/typescript/project/modules/external-modules.md)
- [global.d.ts](https://basarat.gitbook.io/typescript/project/modules/globals.md)
- [Namespaces](https://basarat.gitbook.io/typescript/project/namespaces.md)
- [Dynamic Import Expressions](https://basarat.gitbook.io/typescript/project/dynamic-import-expressions.md)
- [Node.js QuickStart](https://basarat.gitbook.io/typescript/nodejs.md)
- [Browser QuickStart](https://basarat.gitbook.io/typescript/browser.md)
- [Library QuickStart](https://basarat.gitbook.io/typescript/library.md)
- [TypeScript's Type System](https://basarat.gitbook.io/typescript/type-system.md)
- [JS Migration Guide](https://basarat.gitbook.io/typescript/type-system/migrating.md)
- [@types](https://basarat.gitbook.io/typescript/type-system/types.md)
- [Ambient Declarations](https://basarat.gitbook.io/typescript/type-system/intro.md)
- [Declaration Files](https://basarat.gitbook.io/typescript/type-system/intro/d.ts.md)
- [Variables](https://basarat.gitbook.io/typescript/type-system/intro/variables.md)
- [Interfaces](https://basarat.gitbook.io/typescript/type-system/interfaces.md)
- [Enums](https://basarat.gitbook.io/typescript/type-system/enums.md)
- [lib.d.ts](https://basarat.gitbook.io/typescript/type-system/lib.d.ts.md)
- [Functions](https://basarat.gitbook.io/typescript/type-system/functions.md)
- [Callable](https://basarat.gitbook.io/typescript/type-system/callable.md)
- [Type Assertion](https://basarat.gitbook.io/typescript/type-system/type-assertion.md)
- [Freshness](https://basarat.gitbook.io/typescript/type-system/freshness.md)
- [Type Guard](https://basarat.gitbook.io/typescript/type-system/typeguard.md)
- [Literal Types](https://basarat.gitbook.io/typescript/type-system/literal-types.md)
- [Readonly](https://basarat.gitbook.io/typescript/type-system/readonly.md)
- [Generics](https://basarat.gitbook.io/typescript/type-system/generics.md)
- [Type Inference](https://basarat.gitbook.io/typescript/type-system/type-inference.md)
- [Type Compatibility](https://basarat.gitbook.io/typescript/type-system/type-compatibility.md)
- [Never Type](https://basarat.gitbook.io/typescript/type-system/never.md)
- [Discriminated Unions](https://basarat.gitbook.io/typescript/type-system/discriminated-unions.md)
- [Index Signatures](https://basarat.gitbook.io/typescript/type-system/index-signatures.md)
- [Moving Types](https://basarat.gitbook.io/typescript/type-system/moving-types.md)
- [Exception Handling](https://basarat.gitbook.io/typescript/type-system/exceptions.md)
- [Mixins](https://basarat.gitbook.io/typescript/type-system/mixins.md)
- [JSX](https://basarat.gitbook.io/typescript/tsx.md)
- [React](https://basarat.gitbook.io/typescript/tsx/react.md)
- [Non React JSX](https://basarat.gitbook.io/typescript/tsx/others.md)
- [Options](https://basarat.gitbook.io/typescript/intro.md)
- [noImplicitAny](https://basarat.gitbook.io/typescript/intro/noimplicitany.md)
- [strictNullChecks](https://basarat.gitbook.io/typescript/intro/strictnullchecks.md)
- [Errors in TypeScript](https://basarat.gitbook.io/typescript/main.md)
- [Interpreting Errors](https://basarat.gitbook.io/typescript/main/interpreting-errors.md)
- [Common Errors](https://basarat.gitbook.io/typescript/main/common-errors.md)
- [NPM](https://basarat.gitbook.io/typescript/index.md)
- [Testing](https://basarat.gitbook.io/typescript/intro-1.md)
- [Jest](https://basarat.gitbook.io/typescript/intro-1/jest.md)
- [Cypress](https://basarat.gitbook.io/typescript/intro-1/cypress.md)
- [Tools](https://basarat.gitbook.io/typescript/intro-2.md)
- [Prettier](https://basarat.gitbook.io/typescript/intro-2/prettier.md)
- [Husky](https://basarat.gitbook.io/typescript/intro-2/husky.md)
- [ESLint](https://basarat.gitbook.io/typescript/intro-2/eslint.md)
- [Changelog](https://basarat.gitbook.io/typescript/intro-2/changelog.md)
- [TIPs](https://basarat.gitbook.io/typescript/main-1.md)
- [String Based Enums](https://basarat.gitbook.io/typescript/main-1/stringenums.md)
- [Nominal Typing](https://basarat.gitbook.io/typescript/main-1/nominaltyping.md)
- [Stateful Functions](https://basarat.gitbook.io/typescript/main-1/statefulfunctions.md)
- [Currying](https://basarat.gitbook.io/typescript/main-1/currying.md)
- [Type Instantiation](https://basarat.gitbook.io/typescript/main-1/typeinstantiation.md)
- [Lazy Object Literal Initialization](https://basarat.gitbook.io/typescript/main-1/lazyobjectliteralinitialization.md)
- [Classes are Useful](https://basarat.gitbook.io/typescript/main-1/classesareuseful.md)
- [Avoid Export Default](https://basarat.gitbook.io/typescript/main-1/defaultisbad.md)
- [Limit Property Setters](https://basarat.gitbook.io/typescript/main-1/propertysetters.md)
- [outFile caution](https://basarat.gitbook.io/typescript/main-1/outfile.md)
- [JQuery tips](https://basarat.gitbook.io/typescript/main-1/jquery.md)
- [static constructors](https://basarat.gitbook.io/typescript/main-1/staticconstructor.md)
- [singleton pattern](https://basarat.gitbook.io/typescript/main-1/singleton.md)
- [Function parameters](https://basarat.gitbook.io/typescript/main-1/functionparameters.md)
- [Build Toggles](https://basarat.gitbook.io/typescript/main-1/build-toggles.md)
- [Barrel](https://basarat.gitbook.io/typescript/main-1/barrel.md)
- [Create Arrays](https://basarat.gitbook.io/typescript/main-1/create-arrays.md)
- [Typesafe Event Emitter](https://basarat.gitbook.io/typescript/main-1/typed-event.md)
- [StyleGuide](https://basarat.gitbook.io/typescript/styleguide.md)
- [TypeScript Compiler Internals](https://basarat.gitbook.io/typescript/overview.md)
- [Program](https://basarat.gitbook.io/typescript/overview/program.md)
- [AST](https://basarat.gitbook.io/typescript/overview/ast.md)
- [TIP: Visit Children](https://basarat.gitbook.io/typescript/overview/ast/ast-tip-children.md)
- [TIP: SyntaxKind enum](https://basarat.gitbook.io/typescript/overview/ast/ast-tip-syntaxkind.md)
- [Trivia](https://basarat.gitbook.io/typescript/overview/ast/ast-trivia.md)
- [Scanner](https://basarat.gitbook.io/typescript/overview/scanner.md)
- [Parser](https://basarat.gitbook.io/typescript/overview/parser.md)
- [Parser Functions](https://basarat.gitbook.io/typescript/overview/parser/parser-functions.md)
- [Binder](https://basarat.gitbook.io/typescript/overview/binder.md)
- [Binder Functions](https://basarat.gitbook.io/typescript/overview/binder/binder-functions.md)
- [Binder Declarations](https://basarat.gitbook.io/typescript/overview/binder/binder-declarations.md)
- [Binder Container](https://basarat.gitbook.io/typescript/overview/binder/binder-container.md)
- [Binder SymbolTable](https://basarat.gitbook.io/typescript/overview/binder/binder-symboltable.md)
- [Binder Error Reporting](https://basarat.gitbook.io/typescript/overview/binder/binder-diagnostics.md)
- [Checker](https://basarat.gitbook.io/typescript/overview/checker.md)
- [Checker Diagnostics](https://basarat.gitbook.io/typescript/overview/checker/checker-global.md)
- [Checker Error Reporting](https://basarat.gitbook.io/typescript/overview/checker/checker-diagnostics.md)
- [Emitter](https://basarat.gitbook.io/typescript/overview/emitter.md)
- [Emitter Functions](https://basarat.gitbook.io/typescript/overview/emitter/emitter-functions.md)
- [Emitter SourceMaps](https://basarat.gitbook.io/typescript/overview/emitter/emitter-sourcemaps.md)
- [Contributing](https://basarat.gitbook.io/typescript/overview/contributing.md)
