ts-simple-ast
Version:
TypeScript compiler wrapper for AST navigation and code generation.
161 lines (107 loc) • 3.3 kB
Markdown
---
title: Imports
---
## Imports
Imports of a source file can be retrieved by calling:
```typescript
// get them all
const imports = sourceFile.getImportDeclarations();
// or get the first one that matches a condition
const importWithDefaultImport = sourceFile.getImport(i => i.getDefaultImport() != null);
```
### Add/Insert
Add or insert use `insertImportDeclaration`, `insertImportDeclarations`, `addImportDeclaration`, or `addImportDeclarations`:
```typescript
const importDeclaration = sourceFile.addImportDeclaration({
defaultImport: "MyClass",
moduleSpecifier: "./file"
});
```
### Remove
Call `.remove()`:
```typescript
importDeclaration.remove();
```
### Module specifier
Get it:
```typescript
const moduleSpecifier = importDeclaration.getModuleSpecifier(); // returns: string
```
_Example:_ For `import settings from "./settings";` would return `./settings`.
Set it:
```typescript
importDeclaration.setModuleSpecifier("./new-file");
```
### Default import
Get it:
```typescript
const defaultImport = importDeclaration.getDefaultImport(); // returns: Identifier | undefined
```
Set it:
```typescript
importDeclaration.setDefaultImport("MyClass");
```
#### Example
Given the file:
```typescript
import MyClass from "./file";
const instance = new MyClass();
```
Doing the following:
```typescript
const importDeclaration = sourceFile.getImportDeclarations()[0];
importDeclaration.setDefaultImport("NewName");
````
Will rename the default import and all its usages:
```typescript
import NewName from "./file";
const instance = new NewName();
```
### Namespace import
Get it:
```typescript
const namespaceImport = importDeclaration.getNamespaceImport(); // returns: Identifier | undefined
```
Set it:
```typescript
importDeclaration.setNamespaceImport("newName");
```
_Note:_ Setting the namespace import for an existing namespace import will rename any uses of the namespace import in the current file.
### Named imports
Getting a named import:
```typescript
const namedImports = importDeclaration.getNamedImports(); // returns: ImportSpecifier
```
Adding or inserting named imports can be done via the `addNamedImport`, `addNamedImports`, `insertNamedImport`, or `insertNamedImports` methods.
```typescript
const namedImport = importDeclaration.addNamedImport({
name: "MyClass",
alias: "MyAliasName" // alias is optional
});
```
Removing one named import:
```typescript
namedImport.remove();
```
Removing all named imports:
```typescript
importDeclaration.removeNamedImports();
```
#### Import specifier
Import specifiers are the individual named imports.
##### Name
```typescript
namedImport.getNameNode(); // returns: Identifier
namedImport.setName("NewName");
namedImport.renameName("NewName");
```
##### Alias
```typescript
namedImport.getAliasIdentifier(); // returns: Identifier | undefined
namedImport.setAlias("NewAliasName");
```
_Note:_ Setting the alias will rename any uses of the alias or identifier in the current file to the new value.
##### Parent import declaration
```typescript
namedImport.getImportDeclaration(); // returns: ImportDeclaration
```