@babel/preset-typescript

This preset is recommended if you use TypeScript, a typed superset of JavaScript. It includes the following plugins:

You will need to specify --extensions ".ts" for @babel/cli & @babel/node cli’s to handle .ts files.

Example

In

  1. const x: number = 0;

Out

  1. const x = 0;

Installation

  1. npm install --save-dev @babel/preset-typescript

Usage

With a configuration file (Recommended)

  1. {
  2. "presets": ["@babel/preset-typescript"]
  3. }

Via CLI

  1. babel --presets @babel/preset-typescript script.ts

Via Node API

  1. require("@babel/core").transform("code", {
  2. presets: ["@babel/preset-typescript"],
  3. });

Options

isTSX

boolean, defaults to false

Forcibly enables jsx parsing. Otherwise angle brackets will be treated as typescript’s legacy type assertion var foo = <string>bar;. Also, isTSX: true requires allExtensions: true.

jsxPragma

string, defaults to React

Replace the function used when compiling JSX expressions. This is so that we know that the import is not a type import, and should not be removed.

allExtensions

boolean, defaults to false

Indicates that every file should be parsed as TS or TSX (depending on the isTSX option).

allowNamespaces

boolean, uses the default set by @babel/plugin-transform-typescript.

Enables compilation of TypeScript namespaces.

allowDeclareFields

boolean, defaults to false

NOTE: This will be enabled by default in Babel 8

When enabled, type-only class fields are only removed if they are prefixed with the declare modifier:

  1. class A {
  2. declare foo: string; // Removed
  3. bar: string; // Initialized to undefined
  4. }

onlyRemoveTypeImports

boolean, defaults to false

When set to true, the transform will only remove type-only imports (introduced in TypeScript 3.8). This should only be used if you are using TypeScript >= 3.8.

You can read more about configuring preset options here.