@babel/preset-typescript
Этот пресет рекомендуется, если вы используете TypeScript, типизированное надмножество JavaScript. Он включает следующие плагины:
Вам необходимо указать
--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/