Skip to content

Commit aca5448

Browse files
author
mk360
committed
modules
1 parent f3a29e9 commit aca5448

1 file changed

Lines changed: 72 additions & 72 deletions

File tree

docs/documentation/fr/handbook-v2/Modules.md

Lines changed: 72 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -10,73 +10,73 @@ TypeScript, présent depuis 2012, a géré plusieurs de ces formats, mais avec l
1010

1111
Les ES Modules ont été ajoutés à la spécification JavaScript 2015, et ont été supportés dans la plupart des moteurs JavaScript en 2020.
1212

13-
For focus, the handbook will cover both ES Modules and its popular pre-cursor CommonJS `module.exports =` syntax, and you can find information about the other module patterns in the reference section under [Modules](/docs/handbook/modules.html).
13+
Pour ne pas s'éparpiller, le manuel va couvrir les ES Modules et leur précurseur populaire, la syntaxe CommonJS de `module.exports =`. Vous pouvez également trouver des informations sur les autres styles de déclarations de modules dans la référence, sous la page [Modules](/docs/handbook/modules.html) (en anglais).
1414

15-
## How JavaScript Modules are Defined
15+
## Comment les modules JavaScript sont définis
1616

17-
In TypeScript, just as in ECMAScript 2015, any file containing a top-level `import` or `export` is considered a module.
17+
Dans TypeScript, tout comme dans ECMAScript 2015, tout fichier contenant un `import` ou `export` est un module.
1818

19-
Conversely, a file without any top-level import or export declarations is treated as a script whose contents are available in the global scope (and therefore to modules as well).
19+
De même, tout fichier sans déclaration d'import ou d'export est considéré comme un script dont le contenu est disponible dans la portée globale (donc disponible pour les modules).
2020

21-
Modules are executed within their own scope, not in the global scope.
22-
This means that variables, functions, classes, etc. declared in a module are not visible outside the module unless they are explicitly exported using one of the export forms.
23-
Conversely, to consume a variable, function, class, interface, etc. exported from a different module, it has to be imported using one of the import forms.
21+
Les Modules possèdent leur propre portée dans laquelle ils sont exécutés, donc ils ne sont pas exécutés dans la portée globale.
22+
Cela signifie que toute variable, fonction, classe, etc. déclarée dans un module n'est pas visible en dehors du module, sauf si explicitement exportés d'une façon ou d'une autre.
23+
De même, pour utiliser une variable, fonction, classe, interface, etc. exportée d'un module différent, une forme d'import doit être utilisée.
2424

25-
## Non-modules
25+
## Ce qui n'est pas un Module
2626

27-
Before we start, it's important to understand what TypeScript considers a module.
28-
The JavaScript specification declares that any JavaScript files without an `export` or top-level `await` should be considered a script and not a module.
27+
Il est important de comprendre ce que TypeScript considère comme un module.
28+
La spécification JavaScript déclare que tout fichier JavaScript sans un `export` ni d'`await` à la portée la plus haute du fichier doit être considéré comme un script, pas comme un module.
2929

30-
Inside a script file variables and types are declared to be in the shared global scope, and it's assumed that you'll either use the [`outFile`](/tsconfig#outFile) compiler option to join multiple input files into one output file, or use multiple `<script>` tags in your HTML to load these files (in the correct order!).
30+
Dans un fichier de script, les variables et types sont déclarés et accessibles dans la portée globale, et TypeScript suppose que vous utiliserez l'option de compilateur [`outFile`](/tsconfig#outFile) pour assembler plusieurs fichiers d'entrée dans un fichier de sortie, ou utiliser des balises `<script>` dans votre HTML pour charger ces fichiers (dans le bon ordre !).
3131

32-
If you have a file that doesn't currently have any `import`s or `export`s, but you want to be treated as a module, add the line:
32+
Si vous avez des fichiers qui n'ont pas d'`import`, ni d'`export`, mais que vous souhaitez traiter comme des modules, ajoutez la ligne :
3333

3434
```ts twoslash
3535
export {};
3636
```
3737

38-
which will change the file to be a module exporting nothing. This syntax works regardless of your module target.
38+
qui va convertir le fichier en un module qui n'exporte rien. Cette syntaxe fonctionne peu importe votre façon de gérer les imports et exports.
3939

40-
## Modules in TypeScript
40+
## Modules en TypeScript
4141

4242
<blockquote class='bg-reading'>
43-
<p>Additional Reading:<br />
44-
<a href='https://exploringjs.com/impatient-js/ch_modules.html#overview-syntax-of-ecmascript-modules'>Impatient JS (Modules)</a><br/>
45-
<a href='https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules'>MDN: JavaScript Modules</a><br/>
43+
<p>Lecture additionnelle :<br />
44+
<a href='https://exploringjs.com/impatient-js/ch_modules.html#overview-syntax-of-ecmascript-modules'>Impatient JS (en anglais)</a><br/>
45+
<a href='https://developer.mozilla.org/fr/docs/Web/JavaScript/Guide/Modules'>MDN : Modules JavaScript</a><br/>
4646
</p>
4747
</blockquote>
4848

49-
There are three main things to consider when writing module-based code in TypeScript:
49+
Il y a trois éléments principaux à considérer quand vous écrivez du code basé sur des Modules en TypeScript :
5050

51-
- **Syntax**: What syntax do I want to use to import and export things?
52-
- **Module Resolution**: What is the relationship between module names (or paths) and files on disk?
53-
- **Module Output Target**: What should my emitted JavaScript module look like?
51+
- **Syntaxe** : Quelle syntaxe voudrais-je utiliser pour importer et exporter mes modules ?
52+
- **Résolution de Modules** : Quelle est la relation entre les noms (ou chemins) de modules et leurs fichiers sur le disque ?
53+
- **Cible d'émission de Modules** : À quoi doit ressembler mon code JavaScript émis en sortie ?
5454

55-
### ES Module Syntax
55+
### Syntaxe ES Module
5656

57-
A file can declare a main export via `export default`:
57+
Un fichier peut déclarer un export principal avec `export default` :
5858

5959
```ts twoslash
6060
// @filename: hello.ts
6161
export default function helloWorld() {
62-
console.log("Hello, world!");
62+
console.log("Bonjour tout le monde !");
6363
}
6464
```
6565

66-
This is then imported via:
66+
Qui est donc importé avec :
6767

6868
```ts twoslash
6969
// @filename: hello.ts
7070
export default function helloWorld() {
71-
console.log("Hello, world!");
71+
console.log("Bonjour tout le monde !");
7272
}
7373
// @filename: index.ts
7474
// ---cut---
7575
import helloWorld from "./hello.js";
7676
helloWorld();
7777
```
7878

79-
In addition to the default export, you can have more than one export of variables and functions via the `export` by omitting `default`:
79+
En plus de l'export principal, vous pouvez avoir plus d'un export de variables et fonctions via le mot-clé `export` en omettant `default` :
8080

8181
```ts twoslash
8282
// @filename: maths.ts
@@ -92,7 +92,7 @@ export function absolute(num: number) {
9292
}
9393
```
9494

95-
These can be used in another file via the `import` syntax:
95+
Ces exports peuvent être utilisés avec la syntaxe `import` :
9696

9797
```ts twoslash
9898
// @filename: maths.ts
@@ -113,9 +113,9 @@ const absPhi = absolute(phi);
113113
// ^?
114114
```
115115

116-
### Additional Import Syntax
116+
### Syntaxe d'import additionnelle
117117

118-
An import can be renamed using a format like `import {old as new}`:
118+
Un import peut être renommé en utilisant un format comme `import { old as new }`:
119119

120120
```ts twoslash
121121
// @filename: maths.ts
@@ -128,7 +128,7 @@ console.log(π);
128128
// ^?
129129
```
130130

131-
You can mix and match the above syntax into a single `import`:
131+
Vous pouvez combiner les deux façons d'importer dans un seul `import` :
132132

133133
```ts twoslash
134134
// @filename: maths.ts
@@ -145,7 +145,7 @@ console.log(π);
145145
// ^?
146146
```
147147

148-
You can take all of the exported objects and put them into a single namespace using `* as name`:
148+
Vous pouvez assembler tous les éléments exportés dans un espace de noms avec `* as name`:
149149

150150
```ts twoslash
151151
// @filename: maths.ts
@@ -166,7 +166,7 @@ const positivePhi = math.absolute(math.phi);
166166
// ^?
167167
```
168168

169-
You can import a file and _not_ include any variables into your current module via `import "./file"`:
169+
Vous pouvez importer un fichier et _ne pas_ inclure de variables dans votre module actuel avec `import "./file"`:
170170

171171
```ts twoslash
172172
// @filename: maths.ts
@@ -178,11 +178,11 @@ import "./maths.js";
178178
console.log("3.14");
179179
```
180180

181-
In this case, the `import` does nothing. However, all of the code in `maths.ts` was evaluated, which could trigger side-effects which affect other objects.
181+
Dans ce cas, l'`import` ne fait rien. Cela dit, tout le code de `maths.ts` est évalué, ce qui peut provoquer des effets de bord dans d'autres parties.
182182

183-
#### TypeScript Specific ES Module Syntax
183+
#### Syntaxe d'ES Modules propre à TypeScript
184184

185-
Types can be exported and imported using the same syntax as JavaScript values:
185+
Les types peuvent être importés et exportés en utilisant la même syntaxe que JavaScript:
186186

187187
```ts twoslash
188188
// @filename: animal.ts
@@ -198,17 +198,17 @@ import { Cat, Dog } from "./animal.js";
198198
type Animals = Cat | Dog;
199199
```
200200

201-
TypeScript has extended the `import` syntax with two concepts for declaring an import of a type:
201+
TypeScript a ajouté deux concepts à la syntaxe d'`import` pour importer un type :
202202

203203
###### `import type`
204204

205-
Which is an import statement which can _only_ import types:
205+
Une déclaration d'import qui ne peut importer _que_ des types :
206206

207207
```ts twoslash
208208
// @filename: animal.ts
209209
export type Cat = { breed: string; yearOfBirth: number };
210210
export type Dog = { breeds: string[]; yearOfBirth: number };
211-
export const createCatName = () => "fluffy";
211+
export const createCatName = () => "bloom";
212212

213213
// @filename: valid.ts
214214
import type { Cat, Dog } from "./animal.js";
@@ -220,15 +220,15 @@ import type { createCatName } from "./animal.js";
220220
const name = createCatName();
221221
```
222222

223-
###### Inline `type` imports
223+
###### Imports de `type` en une ligne
224224

225-
TypeScript 4.5 also allows for individual imports to be prefixed with `type` to indicate that the imported reference is a type:
225+
TypeScript 4.5 permet également de préfixer des déclarations d'imports en une ligne avec `type` pour indiquer que l'import en une ligne est un type :
226226

227227
```ts twoslash
228228
// @filename: animal.ts
229229
export type Cat = { breed: string; yearOfBirth: number };
230230
export type Dog = { breeds: string[]; yearOfBirth: number };
231-
export const createCatName = () => "fluffy";
231+
export const createCatName = () => "bloom";
232232
// ---cut---
233233
// @filename: app.ts
234234
import { createCatName, type Cat, type Dog } from "./animal.js";
@@ -237,11 +237,11 @@ export type Animals = Cat | Dog;
237237
const name = createCatName();
238238
```
239239

240-
Together these allow a non-TypeScript transpiler like Babel, swc or esbuild to know what imports can be safely removed.
240+
Cela permet aux outils qui n'interagissent pas avec TypeScript, comme Babel, SWC ou esbuild de savoir quels imports peuvent être enlevés en toute sécurité.
241241

242-
#### ES Module Syntax with CommonJS Behavior
242+
#### Syntaxe ES Module au comportement CommonJS
243243

244-
TypeScript has ES Module syntax which _directly_ correlates to a CommonJS and AMD `require`. Imports using ES Module are _for most cases_ the same as the `require` from those environments, but this syntax ensures you have a 1 to 1 match in your TypeScript file with the CommonJS output:
244+
TypeScript possède une syntaxe ES Module qui correspond _directement_ au `require` de CommonJS et AMD. Les imports qui utilisent la syntaxe ES Module sont _pour la plupart_ un équivalent de `require` dans ces environnements, mais cette syntaxe vous garantira que vous aurez une correspondance identique entre votre fichier TypeScript et le fichier de sortie de CommonJS :
245245

246246
```ts twoslash
247247
/// <reference types="node" />
@@ -251,15 +251,15 @@ import fs = require("fs");
251251
const code = fs.readFileSync("hello.ts", "utf8");
252252
```
253253

254-
You can learn more about this syntax in the [modules reference page](/docs/handbook/modules.html#export--and-import--require).
254+
Vous pourrez en apprendre plus sur votre syntaxe dans la page de référence de [modules](/docs/handbook/modules.html#export--and-import--require) (en anglais).
255255

256-
## CommonJS Syntax
256+
## Syntaxe CommonJS
257257

258-
CommonJS is the format which most modules on npm are delivered in. Even if you are writing using the ES Modules syntax above, having a brief understanding of how CommonJS syntax works will help you debug easier.
258+
Le format CommonJS est le format dans lequel la plupart des modules npm sont fournis. Même si vous vous contentez d'écrire en ES Modules, une brève compréhension du mode de fonctionnement de CommonJS vous permettra de faciliter votre débogage.
259259

260-
#### Exporting
260+
#### Exports
261261

262-
Identifiers are exported via setting the `exports` property on a global called `module`.
262+
Les identifiants sont exportés en définissant la propriété `exports` sur un objet global appelé `module`.
263263

264264
```ts twoslash
265265
/// <reference types="node" />
@@ -277,7 +277,7 @@ module.exports = {
277277
};
278278
```
279279

280-
Then these files can be imported via a `require` statement:
280+
Ces fichiers peuvent maintenant être importés avec `require` :
281281

282282
```ts twoslash
283283
// @module: commonjs
@@ -301,7 +301,7 @@ maths.pi;
301301
// ^?
302302
```
303303

304-
Or you can simplify a bit using the destructuring feature in JavaScript:
304+
Vous pouvez simplifier en utilisant la déstructuration en JavaScript :
305305

306306
```ts twoslash
307307
// @module: commonjs
@@ -325,34 +325,34 @@ squareTwo;
325325
// ^?
326326
```
327327

328-
### CommonJS and ES Modules interop
328+
### Interopérabilité entre CommonJS et ES Modules
329329

330-
There is a mis-match in features between CommonJS and ES Modules regarding the distinction between a default import and a module namespace object import. TypeScript has a compiler flag to reduce the friction between the two different sets of constraints with [`esModuleInterop`](/tsconfig#esModuleInterop).
330+
Il y a une certaine différence de fonctionnalités entre les modules CommonJS et ES Module, en terme d'usage de l'objet `module` ou de définition d'export par défaut. TypeScript possède une option de compilateur pour réduire les conflits entre les deux ensembles de contraintes et de règles avec [`esModuleInterop`](/tsconfig#esModuleInterop).
331331

332-
## TypeScript's Module Resolution Options
332+
## Options de résolution de modules de TypeScript
333333

334-
Module resolution is the process of taking a string from the `import` or `require` statement, and determining what file that string refers to.
334+
La résolution de modules est le procédé de détermination du fichier à importer en fonction de la chaîne de caractères dans la déclaration d'`import` ou `require`.
335335

336-
TypeScript includes two resolution strategies: Classic and Node. Classic, the default when the compiler option [`module`](/tsconfig#module) is not `commonjs`, is included for backwards compatibility.
337-
The Node strategy replicates how Node.js works in CommonJS mode, with additional checks for `.ts` and `.d.ts`.
336+
TypeScript possède deux stratégies de résolution de modules : Classic et Node. Classic, l'option par défaut quand l'option [`module`](/tsconfig#module) n'est pas égale à `commonjs`, est incluse pour des raisons de rétro-compatibilité.
337+
La stratégie Node réplique la façon de fonctionnement de Node.js avec CommonJS, avec des vérifications supplémentaires pour les fichiers `.ts` et `.d.ts`.
338338

339-
There are many TSConfig flags which influence the module strategy within TypeScript: [`moduleResolution`](/tsconfig#moduleResolution), [`baseUrl`](/tsconfig#baseUrl), [`paths`](/tsconfig#paths), [`rootDirs`](/tsconfig#rootDirs).
339+
Beaucoup d'options de tsconfig influencent la stratégie de résolution de modules dans TypeScript : [`moduleResolution`](/tsconfig#moduleResolution), [`baseUrl`](/tsconfig#baseUrl), [`paths`](/tsconfig#paths), [`rootDirs`](/tsconfig#rootDirs).
340340

341-
For the full details on how these strategies work, you can consult the [Module Resolution](/docs/handbook/module-resolution.html).
341+
Pour plus de détails sur la façon de fonctionner de ces stratégies, vous pouvez consulter la section de référence sur la [Résolution de Modules](/docs/handbook/module-resolution.html) (en anglais).
342342

343-
## TypeScript's Module Output Options
343+
## Options d'émission de modules en TypeScript
344344

345-
There are two options which affect the emitted JavaScript output:
345+
Deux options affectent le code JavaScript émis :
346346

347-
- [`target`](/tsconfig#target) which determines which JS features are downleveled (converted to run in older JavaScript runtimes) and which are left intact
348-
- [`module`](/tsconfig#module) which determines what code is used for modules to interact with each other
347+
- [`target`](/tsconfig#target) détermine quelles fonctionnalités JS sont nivelées vers le bas (converties pour être exécutées dans des moteurs plus anciens) et lesquelles doivent rester intactes
348+
- [`module`](/tsconfig#module) détermine quelle stratégie est utilisée pour les interactions entre modules
349349

350-
Which [`target`](/tsconfig#target) you use is determined by the features available in the JavaScript runtime you expect to run the TypeScript code in. That could be: the oldest web browser you support, the lowest version of Node.js you expect to run on or could come from unique constraints from your runtime - like Electron for example.
350+
Les fonctionnalités disponibles dans votre moteur JavaScript détermineront la valeur de l'option [`target`](/tsconfig#target) où votre code se lancera. Cela pourrait être : le navigateur le plus ancien que vous supportez, la version-cible la plus basse de Node.js, ou des contraintes uniques de votre environnement - comme avec Electron par exemple.
351351

352-
All communication between modules happens via a module loader, the compiler option [`module`](/tsconfig#module) determines which one is used.
353-
At runtime the module loader is responsible for locating and executing all dependencies of a module before executing it.
352+
Tout module doit passer par un chargeur de modules avant d'être utilisé, et l'option [`module`](/tsconfig#module) détermine quel chargeur vous utiliserez.
353+
À l'exécution, le chargeur de modules s'occupe de localiser et exécuter toutes les dépendances d'un module avant de l'exécuter.
354354

355-
For example, here is a TypeScript file using ES Modules syntax, showcasing a few different options for [`module`](/tsconfig#module):
355+
Par exemple, voici un fichier TypeScript qui utilise la syntaxe d'ES Modules, démontrant différentes options pour [`module`](/tsconfig#module) :
356356

357357
```ts twoslash
358358
// @filename: constants.ts
@@ -397,10 +397,10 @@ import { valueOfPi } from "./constants.js";
397397
export const twoPi = valueOfPi * 2;
398398
```
399399

400-
> Note that ES2020 is effectively the same as the original `index.ts`.
400+
> Remarque, ES2020 est effectivement le même que `index.ts`.
401401
402-
You can see all of the available options and what their emitted JavaScript code looks like in the [TSConfig Reference for `module`](/tsconfig#module).
402+
Vous pourrez voir toutes les options disponibles et à quoi ressemble le code JavaScript en sortie dans la référence de l'option [`module`](/tsconfig#module).
403403

404-
## TypeScript namespaces
404+
## Espaces de noms TypeScript
405405

406-
TypeScript has its own module format called `namespaces` which pre-dates the ES Modules standard. This syntax has a lot of useful features for creating complex definition files, and still sees active use [in DefinitelyTyped](/dt). While not deprecated, the majority of the features in namespaces exist in ES Modules and we recommend you use that to align with JavaScript's direction. You can learn more about namespaces in [the namespaces reference page](/docs/handbook/namespaces.html).
406+
TypeScript possède son propre format de modules, les `namespaces`, qui datent d'avant les ES Modules. Cette syntaxe a beaucoup de fonctionnalités pratiques pour créer des fichiers de définitions complexes, et est utilisée activement [chez DefinitelyTyped](/dt). Les espaces de noms ne sont pas dépréciés, mais la majorité de fonctionnalités dans les espaces de noms existent dans les ES Modules et nous la recommandons pour vous aligner sur JavaScript. Vous pouvez en savoir plus sur les espaces de noms dans la page [de référence](/docs/handbook/namespaces.html).

0 commit comments

Comments
 (0)