AppCode 2023.1 Help

TypeScript

AppCode supports developing, running, and debugging TypeScript source code. AppCode recognizes .ts and .tsx files and provides full range of coding assistance for editing them without any additional steps from your side. TypeScript files are marked with the TypeScript file icon.

TypeScript-aware coding assistance includes completion for keywords, labels, variables, parameters, and functions, error and syntax highlighting, formatting, numerous code inspections and quick-fixes, as well as common and TypeScript-specific refactoring. AppCode also verifies TypeScript code on the fly and shows errors in a dedicated Problems tool window.

Compilation errors are reported in the TypeScript tool window. Learn more from Compiling TypeScript into JavaScript.

Before you start

  • Make sure the JavaScript and TypeScript plugin is enabled in the settings. Press Ctrl+Alt+S to open the IDE settings and select Plugins. Click the Installed tab. In the search field, type JavaScript and TypeScript. For more details about plugins, see Managing plugins.

Verify TypeScript

AppCode verifies TypeScript code mainly based on the data from the TypeScript Language Service which also compiles TypeScript into JavaScript.

Descriptions of the errors detected in the current file and quick-fixes for them are available from the editor and from the File tab of the Problems tool window.

Errors across the entire project and quick-fixes for them are shown in the Project Errors tab of the Problems tool window. To open the tool window, click the Inspection widget in the upper-right corner of the editor:

Inspection widget

See View problems and apply quick-fixes in the editor and Problems tool window for details.

Verify TypeScript in the current file

  • In the editor, hover the mouse pointer over the highlighted problem. AppCode shows a tooltip with a description of the problem.

    View description of an error in the editor

    Apply the suggested quick-fix or click More actions and select the relevant one from the list.

    Apply quick-fix in the editor
  • Alternatively open the File tab of the Problems tool window Alt+6, where you can view problem descriptions, apply quick-fixes, navigate to the fragments in the source code where errors occurred, as well as fix them in the Editor Preview pane without leaving the tool window. Learn more from Problems tool window.

Verify TypeScript in the entire project

  1. To open the Problems tool window, click the Inspections widget in the upper-right corner of the editor.

    Inspection widget

    Alternatively select View | Tool windows | Problems from the main menu or press Alt+6.

  2. Open the Project Errors tab, which shows the errors across the entire project, with error messages grouped by files in which they were detected.

    Problems tool window, TypeScript. Project Errors tab shows syntax errors across the project

    Here you can view problem descriptions, apply quick-fixes, navigate to the fragments in the source code where errors occurred, as well as fix them in the Editor Preview pane without leaving the tool window. Learn more from Problems tool window.

Configure integration with the TypeScript Language Service

In most cases, everything works out of the box and no manual configuration is required. However, if you want to use a custom typescript package or pass some command-line options to the TypeScript Language Service, you can customize the default settings.

  1. In the Preferences dialog (Ctrl+Alt+S), go to Languages & Frameworks | TypeScript.

    Alternatively, click the TypeScript widget on the Status bar and select Configure TypeScript….

    TypeScript widget

    The TypeScript page opens.

  2. Specify the Node.js interpreter to use.

    If you choose the Project alias, AppCode will automatically use the project default interpreter from the Node interpreter field on the Node.js page . In most cases, AppCode detects the project default interpreter and fills in the field itself.

    You can also choose another configured local interpreter or click the Browse button and configure a new one.

  3. In the TypeScript field, specify the version of the TypeScript to use (AppCode displays the currently chosen version).

    • By default, the typescript package from the project's node_modules folder is used.

    • Bundled: choose this option to use the typescript package that is shipped with AppCode without attempting to find another one.

    • Select: choose this option to use a custom typescript package instead of the one bundled with AppCode. In the dialog that opens, choose the path to the relevant package.

    • If your project package manager is Yarn 2, you have to use the typescript package installed via Yarn 2. In this case, yarn:package.json:typescript is by default selected.

      Learn more about package managers from npm and Yarn.

  4. Make sure the TypeScript Language Service checkbox is selected.

  5. Use the controls below to configure the behaviour of the TypeScript Language Service.

  6. In the Options field, specify the command-line options to be passed to the TypeScript Language Service when the tsconfig.json file is not found. See the list of acceptable options at TSC arguments. Note that the -w or --watch (Watch input files) option is irrelevant.

Restart the TypeScript Language Service

  • Click the TypeScript widget on the Status bar and select Restart TypeScript Service from the list.

    TypeScript widget on the Status bar: restart the TypeS cript Language service

Edit TypeScript code

AppCode brings you smart coding assistance for TypeScript including context-aware code completion, auto-import for symbols, documentation look-up, parameter hints, navigation, TypeScript-aware syntax highlighting and linting, refactoring and more.

Auto import

AppCode can generate import statements for modules, classes, components, and any other TypeScript symbols that are exported. By default, AppCode adds import statements when you complete TypeScript symbols.

See Auto import to learn how to optimize import statements and configure their style.

When you type your code or paste a fragment with a symbol that is not yet imported, AppCode can also generate an import statement for this symbol. If there is only one source to import the symbol from, AppCode inserts an import statement silently. Otherwise, use an auto-import tooltip or a dedicated import quick-fix.

Add import statements on code completion

  1. In the Preferences dialog (Ctrl+Alt+S), go to Editor | General | Auto Import. The Auto Import page opens.

  2. In the TypeScript/JavaScript area, select the Add TypeScript imports automatically and On code completion checkboxes.

Add import statements on typing or pasting code

  1. In the Preferences dialog (Ctrl+Alt+S), go to Editor | General | Auto Import. The Auto Import page opens.

  2. In the TypeScript/JavaScript area, select the Add TypeScript imports automatically and Unambiguous imports on the fly checkboxes.

Use auto-import tooltips

If an import statement for a TypeScript symbol was not added on completion or editing, AppCode shows you a popup that suggests importing the symbol.

  • To accept the suggestion, press Alt+Enter:

    ws_import_pop_up.png
  • If there's more than one possible source of import, AppCode informs you about that:

    ws_import_pop_up_multiple_choices.png

    Pressing Alt+Enter in this case opens a list of suggestions:

    ws_import_multiple_choices_suggestion_list.png
  • To hide auto-import tooltips, open the Preferences dialog (Ctrl+Alt+S), go to Editor | General | Auto Import, and clear the With auto-import tooltip checkbox.

Use import quick-fixes

If an auto-import tooltip doesn't show up, you can always add an import statement via the dedicated quick-fix.

  • To generate an import, select Add import statement:

    Auto import with quick-fix: no choices

    If there is only one source to import a symbol from, AppCode generates an import statement:

    Auto import with quick-fix: import statement added
  • If there are several sources to import a symbol from, select the relevant one from the suggestion list:

    Auto import with quick-fix, multiple choices: suggestion list
  • If the TypeScript Language Service is enabled in your project, you can also use its suggestion:

    Auto import with suggestion from the TypeScript Language Service: no choices

    If there are several sources to import a symbol from, select the relevant one from the list that the TypeScript Language Service shows:

    Auto import with suggestion from the TypeScript Language Service: multiple choices

Enable type auto imports

  • Open your tsconfig.json file and set the importsNotUsedAsValues flag in compilerOptions to error:

    "importsNotUsedAsValues": "error",

Learn more from the typeScript official website.

Configure the appearance of import statements

  • In the Preferences dialog (Ctrl+Alt+S), go to Editor | Code Style | TypeScript, and use the controls in the Imports tab.

Documentation look-up

AppCode lets you get reference for symbols from your project and from its dependencies, for symbols defined in external libraries, and for standard JavaScript APIs because TypeScript implements all of them.

By default, documentation is shown in the Documentation popup but you can configure it to appear in the Documentation tool window.

Quick Documentation in a popup

Quick documentation in a popup
  • Hover the mouse over the necessary symbol in the editor.

  • Place the caret at the symbol and press Ctrl+Q or select View | Quick Documentation from the main menu.

    For standard JavaScript methods available in TypeScript, AppCode also shows a link to the corresponding MDN article.

    Quick Documentation Lookup
  • Press Ctrl+Q again to open this documentation in the Documentation tool window.

  • Click the Show Options Menu icon in the popup to change the font size, display the quick documentation toolbar, or go to the source code.

Click the Show Options Menu icon in the popup to change the font size, display the quick documentation toolbar, or go to the source code. See Quick Documentation in a popup for details.

Quick Documentation in the tool window

Quick Documentation Lookup in the tool window

You can open a piece of documentation for a specific code element in the tool window and keep viewing documentation for other elements in your current file as described in Keep documentation in the tool window.

In the tool window, code documentation is displayed on the unpinned tab (the tab marked with the asterisk symbol (*). You can view this documentation by hovering over a symbol or placing the caret at it.

View the MDN documentation for a symbol at caret

  • In the Documentation window Ctrl+Q, click the MDN link.

  • Alternatively, press Shift+F1 or choose View | External Documentation from the main menu.

AppCode opens the MDN article in the default AppCode browser.

View inlay hints

Inlay hints appear in the editor and provide you with additional information about your code to make it easier to read and navigate.

Parameter hints

Parameter hints show the names of parameters in methods and functions to make your code easier to read. By default, parameter hints are shown only for values that are literals or function expressions but not for named objects.

ws_typescript_parameter_hints.png

Configure parameter hints

  1. Open the Preferences dialog (Ctrl+Alt+S) and go to Editor | Inlay Hints.

  2. Expand TypeScript under Parameter names.

  3. Specify the context in which you want parameter hints shown by selecting the corresponding checkboxes.

    The preview shows how the changes you make in the settings affect the code appearance.

  4. For some methods and functions, AppCode does not show parameter hints in any context. Click Exclude list... to view these methods and functions, possibly enable parameter hints for them, or add new items to the list.

  5. To hide parameter hints for any value type in any context, clear the TypeScript checkbox under Parameter names.

Return type hints

AppCode can display function return types in function calls and call chains.

Function return type hints are inferred from a JSDoc comment or based on the static analysis of your code. By default, return type hints are shown for chained methods that are split between multiple lines and return at least 2 different types.

Configure function return type hints

  1. Open the Preferences dialog (Ctrl+Alt+S) go to Editor | Inlay Hints.

  2. Expand the Types node, and then the TypeScript node.

  3. Make sure the Function return types in call chains checkbox is selected, and then specify the minimum number of different types in a call chain for which you want return type hints show.

  4. To show function return types in function calls, expand the Type annotations node and select the Function return types checkbox.

The preview shows how the changes you make in the settings affect the code appearance.

Type hints

Type hints show the types of variables, fields, or parameters. The types of variables and fields are displayed to their definition. Type hints for parameters are shown in function calls. Type hints are inferred from JSDoc comments or static analysis of your code.

Configure type hints

  1. Open the Preferences dialog (Ctrl+Alt+S) and go to Editor | Inlay Hints.

  2. Expand Types | TypeScript.

  3. Expand the Type annotations node and specify the context where you want type hints to be shown.

    The preview shows how the changes you make in the settings affect the code appearance.

  4. To hide parameter type and return type hints for any value type in any context, clear the TypeScript checkbox under Types.

Numeric enum values

By default, AppCode shows inferred values for numeric enums to make your code easier to read.

Hide numeric enum values

  1. Open the Preferences dialog (Ctrl+Alt+S) and go to Editor | Inlay Hints.

  2. Expand the Values node and select the TypeScript checkbox. AppCode will hide the inferred values and show only the values of explicitly initialized constants. The preview shows how the changes you make in the settings affect the code appearance.

JavaScript libraries in TypeScript

When working with JavaScript libraries in TypeScript, you need to install type declarations for them. AppCode reminds you to install them via npm or yarn and updates your package.json file accordingly.

Install the type declarations

  1. Position the caret at the warning and press Alt+Enter.

  2. Select the suggestion and press Enter.

    ws_ts_add_types.png

Syntax highlighting

You can configure TypeScript-aware syntax highlighting according to your preferences and habits.

  1. In the Preferences dialog (Ctrl+Alt+S), go to Editor | Color Scheme | TypeScript.

  2. Select the color scheme, accept the highlighting settings inherited from the defaults or customize them as described in Colors and fonts.

Code navigation

You can quickly navigate through your TypeScript project in the AppCode editor using different actions and popups.

Go to declaration of a symbol

You can navigate from a variable, a field, a method, or any other symbol to its declaration or view the symbol definition in a popup without jumping anywhere from the code you are editing.

  • To jump to the declaration of a symbol, place the caret at a usage of the symbol and press Ctrl+B or select Navigate | Declaration or Usages from the main menu.

    Go to declaration

    Alternatively, use Ctrl+Click: keeping Ctrl pressed, hover your mouse pointer over the symbol. When the symbol turns into a hyperlink, click the hyperlink without releasing Ctrl.

    Go to Declaration with Ctrl+click
  • To view the definition of a symbol in a popup, place the caret at its usage and press Ctrl+Shift+I or select View | Quick Definition from the main menu.

    View the definition of a symbol on a popup

Go to usages of a symbol

You can view a list of usages of a symbol and select the one to jump to.

  1. To get a list of usages of a symbol, place the caret at the declaration of the symbol and do one of the following:

    • Press Ctrl+B or select Navigate | Declaration or Usages from the main menu.

    • Press Ctrl+Alt+F7 or select Edit | Find Usages | Shows Usages from the main menu.

  2. From the list, select the usage of the symbol where you want to jump.

    Go to usages of a symbol

Go to type declaration of a symbol

You can navigate from a variable, a field, a method, or any other symbol to its type declaration. Alternatively, open the type definition in a popup without jumping to the type declaration.

AppCode also shows the inferred type of an object. You can view the inferred type information in a tooltip or in the documentation popup.

Jump to type declaration

  • To jump from a symbol to the declaration of its type, place the caret at a usage of the symbol and press Ctrl+Shift+B or select Navigate | Type Declaration from the main menu.

    Go to type declaration
  • To view the type definition of a symbol in a popup, place the caret at the symbol for which you want to view the type definition and select View | Quick Type Definition.

    Quick type definition

    For an instance of a class, this will reveal the class itself instead of where this instance is defined.

View inferred type information of a symbol

  • Hold Ctrl and hover the mouse pointer over the symbol.

    Inferred type of a symbol is shown in a tooltip
  • Alternatively, hover the mouse pointer over a symbol. AppCode immediately displays the reference for it in the Documentation popup.

    Inferred type of an object is shown in the documentation popup

    Learn more from Documentation look-up above.

Note the difference between Go To Declaration and Go To Type Declaration. Suppose you have a file app.ts with the following code:

import {Dog} from "./dog"; let dog = new Dog(); dog.bark();
If you place the caret at dog in dog.bark(), then Go To Declaration brings you to the declaration of the variable in let dog = new Dog (), while Go To Type Declaration brings you to the declaration of the class Dog.

Navigate between subclasses, superclasses, overrides, and implementations

You can keep track of class implementations and overriding methods either using the gutter icons in the editor or pressing the appropriate shortcuts.

Go to a subclass

  • Press Ctrl+Alt+B or click the Overridden method icon in the gutter and then select the relevant class from the list.

    Go to descendent class
  • Alternatively, select Navigate | Implementation(s) from the main menu or Go To | Implementation(s) from the context menu and then select the relevant class from the list.

Go to a superclass or overridden method

  • Place the caret at a subclass and press Ctrl+U. AppCode brings you to the declaration of the superclass and positions the cursor at its name.

  • Click the Overriding method icon in the gutter next to an overriding method. AppCode brings you to the superclass with the cursor at the overridden method.

    Go to overridden method

    Alternatively, place the caret at the overriding method and press Ctrl+U or select Navigate | Super Method from the main menu or Go To | Super Method from the context menu.

Go to an interface or implemented method

  • Place the caret at an implementation of an interface, press Ctrl+U, and select the interface to go to.

    Go to interface from class

    AppCode brings you to the declaration of the interface and positions the cursor at its name.

  • Click the Implementing method icon in the gutter next to the implementing method. AppCode brings you to the corresponding interface with the cursor at the implemented method.

    Go to implemented method

    Alternatively, place the caret at the implementing method and press Ctrl+U or select Navigate | Super Method from the main menu or Go To | Super Method from the context menu.

Refactoring in TypeScript

AppCode provides both common refactoring procedures, such as rename/move, and so on, and TypeScript-specific refactoring procedures, such as change signature, introduce parameter, introduce variable. See Rename refactorings and Copy and Move Refactorings for details.

Run and debug your application

With AppCode, you can run and debug client-side TypeScript code and TypeScript code running in Node.js. Learn more from Running and debugging TypeScript.

Last modified: 02 March 2023