Spec-Zone.ru › Babel 7

@babel/preset-typescript

Этот пресет рекомендуется, если вы используете TypeScript, типизированное надмножество JavaScript. Он включает следующие плагины:

  • @babel/plugin-transform-typescript

Вам необходимо указать --extensions ".ts" для @babel/cli и @babel/node командной строки, чтобы обрабатывать файлы .ts.

Пример​

В

const x: number = 0;

Из

const x = 0;

Установка​

  • npm
  • Yarn
  • pnpm
npm install --save-dev @babel/preset-typescript
yarn add --dev @babel/preset-typescript
pnpm add --save-dev @babel/preset-typescript

Использование​

С файлом конфигурации (Рекомендуется)​

{
  "presets": ["@babel/preset-typescript"]
}

Через командную строку​

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

Через API Node.js​

require("@babel/core").transformSync("code", {
  presets: ["@babel/preset-typescript"],
  filename: 'script.ts',
});

Параметры​

isTSX​

boolean, по умолчанию false

Принудительно включает разбор jsx. В противном случае угловые скобки будут обрабатываться как устаревшее утверждение типа TypeScript var foo = <string>bar;. Также, isTSX: true требует allExtensions: true.

jsxPragma​

string, по умолчанию React

Заменяет функцию, используемую при компиляции выражений JSX. Это необходимо для того, чтобы мы понимали, что импорт не является импортом типа и не должен удаляться.

jsxPragmaFrag​

string, по умолчанию React.Fragment

Заменяет функцию, используемую при компиляции выражений фрагментов JSX. Это необходимо для того, чтобы мы понимали, что импорт не является импортом типа и не должен удаляться.

allExtensions​

boolean, по умолчанию false

Указывает, что каждый файл должен быть проанализирован как TS, TSX или как TS без неоднозначностей JSX (в зависимости от параметров isTSX и disallowAmbiguousJSXLike).

allowNamespaces​

boolean, использует значения по умолчанию из @babel/plugin-transform-typescript.

Добавлен в: v7.6.0

Включает компиляцию пространств имён TypeScript.

allowDeclareFields​

boolean, по умолчанию false

Добавлен в: v7.7.0

ПРИМЕЧАНИЕ: Этот параметр будет включён по умолчанию в Babel 8

При включении, поля класса, предназначенные только для типов, удаляются только если они имеют префикс модификатором declare:

class A {
  declare foo: string; // Removed
  bar: string; // Initialized to undefined
  prop?: string; // Initialized to undefined
  prop1!: string // Initialized to undefined
}

disallowAmbiguousJSXLike​

boolean, по умолчанию true для файлов .mts и .cts и false в противном случае.

Добавлен в: v7.16.0

Даже когда разбор JSX не включён, этот параметр запрещает использование синтаксиса, который был бы неоднозначным с JSX (<X> y утверждения типа и <X>() => {} аргументы типа). Он соответствует поведению tsc при разборе файлов .mts и .mjs.

onlyRemoveTypeImports​

boolean, по умолчанию false

Добавлен в: v7.9.0

При значении true, преобразование будет удалять только только импорты типа (введённые в TypeScript 3.8). Это следует использовать только если вы используете TypeScript >= 3.8.

optimizeConstEnums​

boolean, по умолчанию false

Добавлен в: v7.15.0

При значении true, Babel будет встраивать значения перечисления, а не использовать обычный вывод enum:

// Input
const enum Animals {
  Fish
}
console.log(Animals.Fish);

// Default output
var Animals;

(function (Animals) {
  Animals[Animals["Fish"] = 0] = "Fish";
})(Animals || (Animals = {}));

console.log(Animals.Fish);

// `optimizeConstEnums` output
console.log(0);

Этот параметр отличается от поведения TypeScript --isolatedModules, которое игнорирует модификатор const и компилирует их как обычные перечисления, и соответствует поведению TypeScript по умолчанию.

Однако при экспорте перечисления Babel будет компилировать его в обычный литерал объекта, чтобы не полагаться на межфайловый анализ во время компиляции:

// Input
export const enum Animals {
  Fish,
}

// `optimizeConstEnums` output
export var Animals = {
  Fish: 0,
};

Дополнительную информацию о настройке параметров пресета можно найти здесь.

© 2014-present Sebastian McKenzie
Licensed under the MIT License.
https://babeljs.io/docs/babel-preset-typescript/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API