@babel/preset-typescript
Cette page a été traduite par PageTurner AI (bêta). Non approuvée officiellement par le projet. Vous avez trouvé une erreur ? Signaler un problème →
Ce preset est recommandé si vous utilisez TypeScript, un sur-ensemble typé de JavaScript. Il inclut les plugins suivants :
Vous devrez spécifier
--extensions ".ts"pour que@babel/cliet@babel/nodepuissent traiter les fichiers.ts.
Exemple
Entrée
const x: number = 0;
Sortie
const x = 0;
Installation
- npm
- Yarn
- pnpm
- Bun
npm install --save-dev @babel/preset-typescript
yarn add --dev @babel/preset-typescript
pnpm add --save-dev @babel/preset-typescript
bun add --dev @babel/preset-typescript
Utilisation
Avec un fichier de configuration (Recommandé)
{
"presets": ["@babel/preset-typescript"]
}
Via CLI
babel --presets @babel/preset-typescript script.ts
Via l'API Node
require("@babel/core").transformSync("code", {
presets: ["@babel/preset-typescript"],
filename: 'script.ts',
});
Options
isTSX
boolean, valeur par défaut : false
Active forcément l'analyse jsx. Sinon, les chevrons seront traités comme l'assertion de type historique de TypeScript var foo = <string>bar;. De plus, isTSX: true nécessite allExtensions: true.
jsxPragma
string, valeur par défaut : React
Remplace la fonction utilisée lors de la compilation des expressions JSX. Cela permet d'identifier que l'import n'est pas un import de type et ne doit pas être supprimé.
jsxPragmaFrag
string, valeur par défaut : React.Fragment
Remplace la fonction utilisée lors de la compilation des expressions de fragments JSX. Cela permet d'identifier que l'import n'est pas un import de type et ne doit pas être supprimé.
allExtensions
boolean, valeur par défaut : false
Indique que chaque fichier doit être analysé comme TS, TSX, ou comme TS sans ambiguïtés JSX (selon les options isTSX et disallowAmbiguousJSXLike).
allowNamespaces
boolean, utilise la valeur par défaut définie par @babel/plugin-transform-typescript.
Ajouté dans : v7.6.0
Active la compilation des namespaces TypeScript.
allowDeclareFields
boolean, valeur par défaut : false
Ajouté dans : v7.7.0
NOTE : Ce sera activé par défaut dans Babel 8
Lorsqu'activé, les champs de classe purement typés ne sont supprimés que s'ils sont préfixés par le modificateur declare :
class A {
declare foo: string; // Removed
bar: string; // Initialized to undefined
prop?: string; // Initialized to undefined
prop1!: string // Initialized to undefined
}
disallowAmbiguousJSXLike
boolean, valeur par défaut : true pour les fichiers .mts et .cts, sinon false.
Ajouté dans la version : v7.16.0
Même lorsque l'analyse JSX n'est pas activée, cette option interdit d'utiliser une syntaxe ambiguë avec JSX (assertions de type <X> y et arguments de type <X>() => {}). Elle correspond au comportement de tsc lors de l'analyse des fichiers .mts et .mjs.
ignoreExtensions
boolean, valeur par défaut : false
Ajouté dans : v7.21.4
Lorsque défini à false, Babel fournira automatiquement les plugins requis pour les fichiers *.ts, *.tsx, *.mts et *.cts.
Lorsque défini à true, Babel fournira un plugin TS générique. Si vous souhaitez transpiler le code source comme s'il s'agissait de *.tsx, activez le preset @babel/preset-react et ce plugin fonctionnera de manière transparente avec la transformation JSX. Par exemple :
{
"presets": ["@babel/preset-react"],
"overrides": [{
"test": "*.vue",
"presets": [
["@babel/preset-typescript"], { "ignoreExtensions": true }
]
}]
}
onlyRemoveTypeImports
boolean, valeur par défaut : false
Ajouté dans : v7.9.0
Lorsque défini sur true, la transformation ne supprimera que les imports de type uniquement (introduits dans TypeScript 3.8). Ne doit être utilisé que si vous utilisez TypeScript >= 3.8.
optimizeConstEnums
boolean, valeur par défaut : false
Ajouté dans : v7.15.0
Lorsque défini sur true, Babel inline les valeurs d'énumération plutôt que d'utiliser le résultat enum habituel :
// 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);
Cette option diffère du comportement --isolatedModules de TypeScript, qui ignore le modificateur const et les compile comme des enums normaux, et aligne le comportement de Babel sur celui par défaut de TypeScript.
Cependant, lors de l'exportation d'un const enum, Babel le compilera en un simple objet littéral pour éviter de dépendre d'une analyse multi-fichiers :
// Input
export const enum Animals {
Fish,
}
// `optimizeConstEnums` output
export var Animals = {
Fish: 0,
};
Vous pouvez en savoir plus sur la configuration des options des presets ici.
rewriteImportExtensions
boolean, valeur par défaut : false
Ajouté dans : v7.23.0
Lorsque défini à true, Babel réécrira les extensions .ts/.mts/.cts dans les déclarations d'import en .js/.mjs/.cjs. Cette option reflète l'option rewriteRelativeImportExtensions de TypeScript.
Cette option, utilisée avec l'option allowImportingTsExtension de TypeScript, permet d'écrire des spécificateurs relatifs complets dans les déclarations d'import tout en utilisant la même extension que les fichiers sources.
Par exemple, avec cette structure de projet (où src contient les fichiers sources et dist les fichiers compilés) :
.
├── src
│ ├── main.ts
│ └── dep.ts
├── dist
│ ├── main.js
│ └── dep.js
├── babel.config.json
└── tsconfig.json
et avec les fichiers de configuration suivants :
| babel.config.json | tsconfig.json |
|---|---|
| |
vous pourrez écrire import x from "./dep.ts" dans main.ts, et Babel le transformera en import x from "./dep.js" lors de la compilation de main.ts en main.js.