# Ts Morph > Certain nodes in TypeScript can be ambient. For example, all nodes within a declaration file are ambient. ## Pages - [Ambient](details-ambient.md): Certain nodes in TypeScript can be ambient. For example, all nodes within a declaration file are ambient. - [Async](details-async.md): Certain nodes in TypeScript can have an`async`keyword modifier. - [Classes](details-classes.md): Class declarations can be retrieved from source files, namespaces, or function bodies: - [Comment Ranges](details-comment-ranges.md): See [Comments](comments.md). - [Comments](details-comments.md): _ts-morph_ parses out certain kinds of comments to make them easier to work with. This breaks away from the behaviour... - [Decorators](details-decorators.md): Decorators can be retrieved from class related nodes by calling the`getDecorators()`method. - [JS Docs](details-documentation.md): Certain nodes can have JS docs. For example: - [Enums](details-enums.md): Enums can be retrieved from source files, namespaces, or function bodies: - [Export](details-exports.md): Certain nodes in TypeScript can be [exported](https://www.typescriptlang.org/docs/handbook/modules.html). - [Expressions](details-expressions.md): These are found in certain areas. For example`extends`and`implements`expressions. - [Functions](details-functions.md): Functions can be retrieved from source files, other namespaces, or function bodies: - [Generators](details-generators.md): Nodes like`FunctionDeclaration`and`MethodDeclaration`can be generators. - [Identifiers](details-identifiers.md): Identifiers are nodes that reference or define the name of a node. - [Imports](details-imports.md): Imports of a source file or module can be retrieved by calling: - [Details](details.md): There is navigation support for most parts of the language at the current moment, but not everything. - [Initializers](details-initializers.md): For example, given the following code: - [Interfaces](details-interfaces.md): Interface declarations can be retrieved from source files, namespaces, or function bodies: - [Literals](details-literals.md): Literals: - [Modifiers](details-modifiers.md): Modifiers are nodes that modify other nodes. For example, the`private`keyword is a modifier that changes the scope ... - [Module / Namespace Declarations](details-modules.md): Module declarations may look like any of the following: - [Namespaces](details-namespaces.md): See [Modules](modules). - [Object Literal Expressions](details-object-literal-expressions.md): Object literal expressions look like the [initializer](initializers) for this variable declaration: - [Parameters](details-parameters.md): Parameters can be retreived from nodes by calling`getParameters()`: - [Signatures](details-signatures.md): const typeParams = signature.getTypeParameters(); // returns: TypeParameter[] - [Source Files](details-source-files.md): Source files are the root nodes of the AST. They can be created or added to a`Project`instance - [Type Aliases](details-type-aliases.md): Type aliases can be retrieved from source files, namespaces, or function bodies: - [Type Parameters](details-type-parameters.md): Type parameters can be retreived from nodes by calling`getTypeParameters()`: - [Types](details-types.md): Types are accessed by calling`.getType()`on nodes that are typed. For example: - [Variables](details-variables.md): A variable statement looks like the following: - [Emitting](emitting.md): Emitting is is the process of taking the original TypeScript files and outputting them as JavaScript (`.js`) and/or d... - [Documentation](index.md): Setup, navigation, and manipulation of the TypeScript AST can be a challenge. This library wraps the TypeScript compi... - [Code Writer](manipulation-code-writer.md): With manipulation methods that accept a`string`for the new code, it's possible to write text using a provided [code... - [Formatting](manipulation-formatting.md): Sometimes you might encounter code that looks terrible. For example: - [Manipulating Source Files](manipulation.md): Most information about manipulation can be found in the [Details](../details) section. This section only contains gen... - [Order](manipulation-order.md): Change the order of certain nodes using the`.setOrder(newIndex: number)`method. - [Performance](manipulation-performance.md): There's a lot of opportunity for performance improvements. The library originally started off favouring correctness, ... - [Removing](manipulation-removing.md): Given the source file for following code: - [Renaming](manipulation-renaming.md): Given the source file for following code: - [Manipulation Settings](manipulation-settings.md): The manipulation settings can be set when creating the main`Project`object: - [Structures](manipulation-structures.md): Simplified AST representations called _structures_ can be retreived from and used to set many`Node`objects. - [Transforms](manipulation-transforms.md): It is possible to transform the AST using the compiler API, though this is not a typical scenario. - [Ambient Modules](navigation-ambient-modules.md): The ambient module symbols can be retrieved by calling: - [Underlying Compiler Nodes](navigation-compiler-nodes.md): Sometimes it might be useful to get the node from the TypeScript compiler. - [Directories](navigation-directories.md): Based on the source files created, appropriate directory objects will be created. These objects hold source files and... - [Navigation example](navigation-example.md): Given the following file: - [Finding References](navigation-finding-references.md): Find all the references of a node by calling`.findReferences()`on an identifier or named/nameable declaration. - [Getting Source Files](navigation-getting-source-files.md): After source files are added, you will need to get them in order to navigate or make changes. - [Navigating the AST](navigation.md): Navigating the AST should be simple and straightforward. - [Language Service](navigation-language-service.md): Get the language service by calling: - [Program](navigation-program.md): Get the program by calling: - [Type Checker](navigation-type-checker.md): Get the type checker by calling: - [ts-morph Documentation](root-readme.md): Monorepo for [ts-morph](packages/ts-morph) and related projects. - [Adding Source Files](setup-adding-source-files.md): You will need to populate the`project`object with source files. - [AST Viewers](setup-ast-viewers.md): An AST viewer is a useful way to help understand the TypeScript AST for some source code. - [Diagnostics](setup-diagnostics.md): Diagnostics (compile errors) can be retrieved on the project or on source files: - [File System](setup-file-system.md): By default, the library will use the local file system based on the current working directory. In most scenarios, you... - [Instantiating](setup.md): Use the`Project`named export from`"ts-morph"`: - [Utilities](utilities.md): This is an outline of any utilities currently available in the library.