Skip to content

Commit 452986c

Browse files
Merge pull request #148 from mk360/fr-ts-for-new-programmers
Co-authored-by: ManuSquall <[email protected]>
2 parents 4603ba9 + 2d84aab commit 452986c

File tree

1 file changed

+192
-0
lines changed

1 file changed

+192
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,192 @@
1+
---
2+
title: TypeScript pour les nouveaux programmeurs
3+
short: TS pour les nouveaux programmeurs
4+
layout: docs
5+
permalink: /fr/docs/handbook/typescript-from-scratch.html
6+
oneline: Learn TypeScript from scratch
7+
---
8+
9+
Félicitations, vous avez choisi TypeScript comme premier langage — déjà une bonne décision !
10+
11+
Vous avez peut-être déjà entendu dire que TypeScript est une "variante" de JavaScript.
12+
La relation entre les deux est unique parmi les langages de programmation existants, et étudier cette relation vous permettra de comprendre ce qu'ajoute TypeScript à JavaScript.
13+
14+
## Bref historique de JavaScript
15+
16+
JavaScript (aussi connu sous le nom ECMAScript) était à l'origine un simple langage de scripting pour navigateurs.
17+
Quand il fut inventé, il était utilisé pour de petits extraits de code dans une page web — aller au-delà d'une douzaine de ligne était inhabituel.
18+
De ce fait, les navigateurs exécutaient du code JS assez lentement.
19+
Cependant, la popularité de JavaScript grandira avec le temps, et les développeurs web ont commencé à s'en servir pour créer des expériences interactives.
20+
21+
Les développeurs de navigateurs Web répondirent à cette croissance de fréquence d'usage en optimisant les environnements d'exécution (compilation dynamique) et en élargissant le champ du possible avec JS (en ajoutant des APIs). Cela contribua à un usage encore plus répandu parmi les développeurs web.
22+
Un site web moderne, de nos jours, contient des centaines de milliers de lignes de code. Ceci est en phase avec la façon dont le web a grandi, partant d'un simple ensemble de pages statiques, pour devenir une plateforme d'applications riches pour tout et sur tout.
23+
24+
De plus, le JS est devenu assez populaire pour être utilisé en dehors de navigateurs, Node.js ayant marqué l'implémentation de JS dans un environnement côté serveur.
25+
Cette capacité à s'exécuter partout a fait du langage un choix populaire pour le développement d'applications cross-platform.
26+
Il y a beaucoup de développeurs dont le stack technique n'est constitué que de JavaScript !
27+
28+
Pour résumer, ce langage a été créé à l'origine pour répondre à des besoins simples, puis a évolué pour supporter l'exécution de millions de lignes.
29+
Chaque langage a ses propres points bizarres et surprises, le JS ne faisant pas exception dû à ses débuts :
30+
31+
- L'opérateur d'égalité (`==`) _convertit_ ses arguments, conduisant à un comportement bizarre :
32+
33+
```js
34+
if ("" == 0) {
35+
// C'est vrai, mais pourquoi ?
36+
}
37+
if (1 < x < 3) {
38+
// C'est vrai peu importe la valeur de x !
39+
}
40+
```
41+
42+
- JavaScript permet l'accès à des propriétés inexistantes :
43+
44+
```js
45+
const obj = { width: 10, height: 15 };
46+
const area = obj.width * obj.heigth;
47+
// Bonne chance pour savoir pourquoi "area" est égale à NaN
48+
```
49+
50+
La plupart des langages lanceraient une erreur lors de ces situations. Certains le font à la compilation — avant l'exécution de quoi que ce soit.
51+
Cette absence d'erreurs et ses mauvaises surprises sont gérables pour de petits programmes, mais beaucoup moins à l'échelle d'une grande application.
52+
53+
## TypeScript : un vérificateur statique de types
54+
55+
Nous disions que certains langages interdiraient l'exécution de code erroné.
56+
La détection d'erreurs dans le code sans le lancer s'appelle la _vérification statique_.
57+
La distinction entre ce qui est une erreur de ce qui ne l'est pas, en partant des valeurs avec lesquelles on travaille, s'appelle la vérification statique de types.
58+
59+
TypeScript vérifie les erreurs d'un programme avant l'exécution, et fait cela en se basant sur les _types de valeurs_, c'est un _vérificateur statique_.
60+
Par exemple, l'exemple ci-dessus avait une erreur à cause du _type_ d'`obj` :
61+
62+
```ts twoslash
63+
// @errors: 2551
64+
const obj = { width: 10, height: 15 };
65+
const area = obj.width * obj.heigth;
66+
```
67+
68+
### Une surcouche typée de JavaScript
69+
70+
Quel est le rapport entre JavaScript et TypeScript ?
71+
72+
#### Syntaxe
73+
74+
TypeScript est une _surcouche_ de JavaScript : une syntaxe JS légale est donc une syntaxe TS légale.
75+
La syntaxe définit la façon dont on écrit un programme.
76+
Par exemple, ce code a une erreur de _syntaxe_ parce qu'il manque un `)` :
77+
78+
```ts twoslash
79+
// @errors: 1005
80+
let a = (4
81+
```
82+
83+
TypeScript ne considère pas forcément du code JavaScript comme du code invalide.
84+
Cela signifie que vous pouvez prendre du code JavaScript fonctionnel et le mettre dans un fichier TypeScript sans vous inquiéter de comment il est écrit exactement.
85+
86+
#### Types
87+
88+
Cependant, TypeScript est une surcouche _typée_. Cela veut dire que TS ajoute des règles régissant comment différents types de valeurs peuvent être utilisés.
89+
L'erreur à propos de `obj.heigth` n'est pas une erreur de _syntaxe_ : c'est une erreur où l'on a utilisé une sorte de valeur (un _type_) de façon incorrecte.
90+
91+
Autre exemple, ce code JavaScript que vous pouvez lancez dans votre navigateur. Il _va_ afficher une valeur :
92+
93+
```js
94+
console.log(4 / []);
95+
```
96+
97+
Ce programme - dont la syntaxe est correcte - affiche `Infinity`.
98+
Mais TypeScript considère que la division d'un nombre par un tableau ne fait pas sens, et va lancer une erreur :
99+
100+
```ts twoslash
101+
// @errors: 2363
102+
console.log(4 / []);
103+
```
104+
105+
Il se peut que vous vouliez _vraiment_ diviser un nombre par un tableau, peut-être juste pour voir le résultat, mais la plupart du temps, vous avez fait une erreur.
106+
Le vérificateur de types de TS est conçu pour accepter les programmes valides, tout en signalant le plus d'erreurs communes possibles.
107+
(Nous apprendrons plus tard divers paramètres pour contrôler à quel point vous voulez que TS soit strict avec votre code.)
108+
109+
En migrant du code JavaScript vers un fichier TypeScript, il se peut que vous voyiez des _erreurs de type_ en fonction de la façon avec laquelle il a été écrit.
110+
Il se peut qu'il y ait de vrais problèmes avec votre code, tout comme il se peut que TypeScript soit trop strict.
111+
À travers ce guide, nous montrerons comment ajouter de la syntaxe TypeScript pour éliminer ces erreurs.
112+
113+
#### Comportement à l'exécution
114+
115+
TypeScript est aussi un langage qui préserve le _comportement à l'exécution_ de JavaScript.
116+
Par exemple, la division par 0 produit `Infinity` au lieu de lancer une erreur.
117+
TypeScript, par principe, ne change **jamais** le comportement de code JS.
118+
119+
Cela veut dire que si vous déplacez du code de JavaScript à TypeScript, il est **garanti** de s'exécuter de la même façon, même si TS pense qu'il comporte des erreurs liées aux types.
120+
121+
La conservation du comportement à l'exécution est l'un des principes fondamentaux de TypeScript parce que cela signifie que vous pouvez facilement alterner entre les deux langages sans vous inquiéter de différences subtiles qui empêcheraient votre programme de se lancer.
122+
123+
<!--
124+
Missing subsection on the fact that TS extends JS to add syntax for type
125+
specification. (Since the immediately preceding text was raving about
126+
how JS code can be used in TS.)
127+
-->
128+
129+
#### Effacement de types
130+
131+
Grossièrement, une fois que le compilateur de TypeScript a fini de vérifier le code, il _efface_ les types pour laisser le code résultant.
132+
Cela signifie qu'à la fin du processus de compilation, le code JS ne conserve aucune information de types.
133+
134+
Cela signifie aussi que TypeScript, en se basant sur les types présents dans le code, n'altère jamais le _comportement_ du programme.
135+
136+
Pour résumer, même si vous pouvez avoir des erreurs de type lors de la compilation, le système de types n'affecte aucunement la façon dont votre programme s'exécute.
137+
138+
Enfin, TypeScript ne fournit aucune librairie supplémentaire.
139+
Vos programmes utiliseront les mêmes librairies standard ou externes que vos programmes JS, il n'y a donc aucun framework additionnel à apprendre au niveau de TS.
140+
141+
Il est intéressant de noter qu'il est possible de préciser la version de JavaScript que TypeScript doit cibler lors de la compilation. Cela affecte le code final, qui contiendra ou non des _polyfills_ (du code qui redéfinit des fonctionnalités existantes dans une version de JavaScript mais absentes dans une autre).
142+
143+
<!--
144+
Should extend this paragraph to say that there's an exception of
145+
allowing you to use newer JS features and transpile the code to an older
146+
JS, and this might add small stubs of functionality when needed. (Maybe
147+
with an example --- something like `?.` would be good in showing readers
148+
that this document is maintained.)
149+
-->
150+
151+
## Apprendre JavaScript et TypeScript
152+
153+
Une question souvent posée est "Est-ce que je dois apprendre TypeScript ou JavaScript", à laquelle on répond qu'il n'est pas possible d'apprendre le TS sans apprendre le JS.
154+
155+
TypeScript possède la même syntaxe, et se comporte de la même façon que JavaScript, donc vous pourrez utiliser tout ce que vous apprenez avec JavaScript, dans TypeScript.
156+
157+
Il y a beaucoup, _beaucoup_ de ressources disponibles pour apprendre le JavaScript. Ces ressources ne doivent pas être ignorées si vous voulez apprendre TypeScript. Par exemple, il y a à peu près 20 fois plus de questions StackOverflow taggées `javascript` que `typescript`, mais toutes les questions `javascript` s'appliquent aussi à TypeScript.
158+
159+
Si vous recherchez quelque chose comme "comment trier un tableau en TypeScript", souvenez-vous : **TypeScript est du JavaScript avec un vérificateur de types à la compilation**. La façon dont vous triez un tableau en JavaScript est la même qu'en TypeScript.
160+
Si vous trouvez une ressource qui utilise TypeScript, ce n'est pas plus mal, mais ne croyez pas que vous avez besoin de réponses spécifiques à TS pour des tâches JS de tous les jours.
161+
162+
## Prochaines étapes
163+
164+
C'était un bref résumé des syntaxes et outils utilisés dans le TypeScript de tous les jours. À partir de là, vous pourrez :
165+
166+
- Apprendre des fondamentaux de TypeScript. Nous recommandons :
167+
168+
- [Les ressources JavaScript de Microsoft](https://docs.microsoft.com/javascript/) ou
169+
- [Le guide JavaScript dans les Mozilla Web Docs](https://developer.mozilla.org/docs/Web/JavaScript/Guide)
170+
171+
- Continuer vers la page [TypeScript pour les développeurs JavaScript](/docs/handbook/typescript-in-5-minutes.html)
172+
- Lire le Manuel [du début à la fin](/docs/handbook/intro.html) (30m)
173+
- Explorer les [exemples du bac à sable](/play#show-examples)
174+
175+
<!-- Note: I'll be happy to write the following... -->
176+
<!--
177+
## Types
178+
179+
* What's a type? (For newbies)
180+
* A type is a *kind* of value
181+
* Types implicitly define what operations make sense on them
182+
* Lots of different kinds, not just primitives
183+
* We can make descriptions for all kinds of values
184+
* The `any` type -- a quick desctiption, what it is, and why it's bad
185+
* Inference 101
186+
* Examples
187+
* TypeScript can figure out types most of the time
188+
* Two places we'll ask you what the type is: Function boundaries, and later-initialized values
189+
* Co-learning JavaScript
190+
* You can+should read existing JS resources
191+
* Just paste it in and see what happens
192+
* Consider turning off 'strict' -->

0 commit comments

Comments
 (0)