You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: documentation/docs/05-misc/03-typescript.md
+45-39Lines changed: 45 additions & 39 deletions
Original file line number
Diff line number
Diff line change
@@ -2,15 +2,15 @@
2
2
title: TypeScript
3
3
---
4
4
5
-
You can use TypeScript within Svelte components. IDE extensions like the [Svelte VSCode extension](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode)will help you catch errors right in your editor, and[`svelte-check`](https://www.npmjs.com/package/svelte-check)does the same on the command line, which you can integrate into your CI.
5
+
Vous pouvez utiliser TypeScript dans vos composants. Des extensions d'<spanclass="vo">[IDE](/docs/development#ide)</span> comme l'[extension Svelte VSCode](https://marketplace.visualstudio.com/items?itemName=svelte.svelte-vscode)vous aideront à voir et corriger les erreurs directement dans votre éditeur, et[`svelte-check`](https://www.npmjs.com/package/svelte-check)fera la même chose en ligne de commande, que vous pouvez ajouter à votre chaîne d'intégration continue.
6
6
7
-
## Setup
7
+
## Mise en place
8
8
9
-
To use TypeScript within Svelte components, you need to add a preprocessor that will turn TypeScript into JavaScript.
9
+
Pour utiliser TypeScript dans vos composants Svelte, vous devez ajouter un préprocesseur qui compilera le code TypeScript en JavaScript.
10
10
11
-
### Using SvelteKit or Vite
11
+
### Utiliser SvelteKit ou Vite
12
12
13
-
The easiest way to get started is scaffolding a new SvelteKit project by typing `npm create svelte@latest`, following the prompts and choosing the TypeScript option.
13
+
La façon la plus simple de démarrer avec Typescript est de créer un nouveau projet en tapant : `npm create svelte@latest`, en suivant les propositions et en choisissant l'option TypeScript.
14
14
15
15
```ts
16
16
/// file: svelte.config.js
@@ -24,7 +24,7 @@ const config = {
24
24
exportdefaultconfig;
25
25
```
26
26
27
-
If you don't need or want all the features SvelteKit has to offer, you can scaffold a Svelte-flavoured Vite project instead by typing `npm create vite@latest`and selecting the `svelte-ts` option.
27
+
Si vous n'avez pas besoin ou ne souhaitez pas de toutes les fonctionnalités de SvelteKit, vous pouvez démarrer un projet Svelte avec Vite en tapant : `npm create vite@latest`et en choisissant l'option `svelte-ts`.
28
28
29
29
```ts
30
30
/// file: svelte.config.js
@@ -37,17 +37,17 @@ const config = {
37
37
exportdefaultconfig;
38
38
```
39
39
40
-
In both cases, a `svelte.config.js`with`vitePreprocess`will be added. Vite/SvelteKit will read from this config file.
40
+
Dans les deux cas, un fichier `svelte.config.js`avec`vitePreprocess`sera ajouté. Vite et SvelteKit liront ce fichier de configuration.
41
41
42
-
### Other build tools
42
+
### Autres outils de compilation
43
43
44
-
If you're using tools like Rollup or Webpack instead, install their respective Svelte plugins. For Rollup that's [rollup-plugin-svelte](https://github.com/sveltejs/rollup-plugin-svelte)and for Webpack that's[svelte-loader](https://github.com/sveltejs/svelte-loader). For both, you need to install `typescript`and`svelte-preprocess`and add the preprocessor to the plugin config (see the respective READMEs for more info). If you're starting a new project, you can also use the [rollup](https://github.com/sveltejs/template)or [webpack](https://github.com/sveltejs/template-webpack)template to scaffold the setup from a script.
44
+
Si vous utilisez d'autres outils comme Rollup ou Webpack, installez leurs <spanclass="vo">[plugins](/docs/development#plugin)</span> Svelte respectifs. Pour Rollup, il s'agit de [rollup-plugin-svelte](https://github.com/sveltejs/rollup-plugin-svelte)et pour Webpack, c'est[svelte-loader](https://github.com/sveltejs/svelte-loader). Dans les deux cas, vous devez installer `typescript`et`svelte-preprocess`et ajouter le préprocesseur à la configuration du plugin (voir les documentations respectives). Si vous démarrez un nouveau projet, vous pouvez utiliser le [template rollup](https://github.com/sveltejs/template)ou le [template webpack](https://github.com/sveltejs/template-webpack)pour configurer votre projet.
45
45
46
-
> If you're starting a new project, we recommend using SvelteKit or Vite instead
46
+
> Si vous démarrez un nouveau projet, nous vous recommandons plutôt d'utiliser SvelteKit ou Vite.
47
47
48
48
## `<script lang="ts">`
49
49
50
-
To use TypeScript inside your Svelte components, add`lang="ts"`to your`script`tags:
50
+
Pour utiliser TypeScript dans vos composants Svelte, ajoutez`lang="ts"`au tag`script` :
51
51
52
52
```svelte
53
53
<script lang="ts">
@@ -61,7 +61,7 @@ To use TypeScript inside your Svelte components, add `lang="ts"` to your `script
61
61
62
62
### Props
63
63
64
-
Props can be typed directly on the `export let`statement:
64
+
Les <spanclass="vo">[props](/docs/sveltejs#props)</span> peuvent directement être typées sur l'instruction `export let` :
65
65
66
66
```svelte
67
67
<script lang="ts">
@@ -71,7 +71,7 @@ Props can be typed directly on the `export let` statement:
71
71
72
72
### Slots
73
73
74
-
Slot and slot prop types are inferred from the types of the slot props passed to them:
74
+
Les <spanclass="vo">[slots](/docs/sveltejs#slot)</span> et les types de leurs <spanclass="vo">[props](/docs/sveltejs#props)</span> sont déduits des types des props qui leurs sont passées :
75
75
76
76
```svelte
77
77
<script lang="ts">
@@ -80,65 +80,71 @@ Slot and slot prop types are inferred from the types of the slot props passed to
80
80
81
81
<slot {name} />
82
82
83
-
<!-- Later -->
83
+
<!-- Ailleurs -->
84
84
<Comp let:name>
85
-
<!-- ^ Inferred as string -->
85
+
<!-- ^ Déduit comme string -->
86
86
{name}
87
87
</Comp>
88
88
```
89
89
90
90
### Events
91
91
92
-
Events can be typed with `createEventDispatcher`:
92
+
Les événements peuvent être typés avec `createEventDispatcher`:
93
93
94
94
```svelte
95
95
<script lang="ts">
96
96
import { createEventDispatcher } from 'svelte';
97
97
98
98
const dispatch = createEventDispatcher<{
99
+
<<<<<<< HEAD
99
100
event: null; // does not accept a payload
100
101
click: string; // has a required string payload
101
102
type: string | null; // has an optional string payload
103
+
=======
104
+
event: null; // n'accepte pas d'argument
105
+
type: string; // contient obligatoirement une string
106
+
click: string | null; // peut contenir une string ou être non défini
Svelte provides a best effort of all the HTML DOM types that exist. Sometimes you may want to use experimental attributes or custom events coming from an action. In these cases, TypeScript will throw a type error, saying that it does not know these types. If it's a non-experimental standard attribute/event, this may very well be a missing typing from our [HTML typings](https://github.com/sveltejs/svelte/blob/master/packages/svelte/elements.d.ts). In that case, you are welcome to open an issue and/or a PR fixing it.
126
+
Svelte fournit des types aussi proche que possible pour chaque élément HTML du <spanclass="vo">[DOM](/docs/web#dom)</span> qui existe. Parfois, vous voudrez utiliser des attributs expérimentaux ou des événements personnalisés. Dans ces cas, TypeScript lèvera une erreur de type, en indiquant qu'il ne connaît pas ces types. S'il s'agit d'un attribut ou événement standard et non expérimental, il se peut tout à fait que ce soit un type manquant dans [le typage HTML de Svelte](https://github.com/sveltejs/svelte/blob/master/elements/index.d.ts). Dans ce cas, vous êtes invité•e à ouvrir une <spanclass="vo">[issue](/docs/development#issue)</span> ou une <spanclass="vo">[PR](/docs/development#pull-request)</span> pour le corriger.
121
127
122
-
In case this is a custom or experimental attribute/event, you can enhance the typings like this:
128
+
S'il s'agit d'un attribut ou d'un événement expérimental ou personnalisé, vous pouvez étendre le typage comme suit :
//If you want to use myCustomAttribute={..} (note: all lowercase)
136
-
mycustomattribute?:any; //You can replace any with something more specific if you like
141
+
//Si vous voulez utiliser myCustomAttribute={..} (note: tout en minuscule)
142
+
mycustomattribute?:any; //Vous pouvez remplacer any par quelque chose de plus précis si vous le souhaitez
137
143
}
138
144
}
139
145
```
140
146
141
-
Then make sure that `d.ts`file is referenced in your `tsconfig.json`. If it reads something like `"include": ["src/**/*"]`and your `d.ts`file is inside `src`, it should work. You may need to reload for the changes to take effect.
147
+
Ensuite, assurez vous que les fichiers `d.ts`soient référencés dans `tsconfig.json`. Si vous lisez quelque chose comme : `"include": ["src/**/*"]`et vos fichiers `d.ts`sont dans votre dossier `src`, ça devrait marcher. Vous devrez peut-être relancer votre serveur pour que le changement prenne effet.
142
148
143
149
Since Svelte version 4.2 / `svelte-check` version 3.5 / VS Code extension version 107.10.0 you can also declare the typings by augmenting the `svelte/elements` module like this:
144
150
@@ -162,41 +168,41 @@ export {}; // ensure this is not an ambient module, else types will be overridde
162
168
163
169
## Experimental advanced typings
164
170
165
-
A few features are missing from taking full advantage of TypeScript in more advanced use cases like typing that a component implements a certain interface, explicitly typing slots, or using generics. These things are possible using experimental advanced type capabilities. See [this RFC](https://github.com/dummdidumm/rfcs/blob/ts-typedefs-within-svelte-components/text/ts-typing-props-slots-events.md)for more information on how to make use of them.
171
+
Quelques fonctionnalités sont manquantes pour bénéficier de tous les avantages de TypeScript dans des cas plus avancés, comme pour typer qu'un composant étend une interface, pour typer les <spanclass="vo">[slots](/docs/sveltejs#slot)</span> ou pour utiliser des génériques. Tout ceci est rendu possible en utilisant des fonctionnalités expérimentales avancées. Voir [la RFC](https://github.com/dummdidumm/rfcs/blob/ts-typedefs-within-svelte-components/text/ts-typing-props-slots-events.md)pour savoir comment définir de tels typages.
166
172
167
-
> The API is experimental and may change at any point
173
+
> Cette <spanclass="vo">[API](/docs/development#api)</span> est expérimentale et peut changer à tout moment.
168
174
169
175
## Limitations
170
176
171
-
### No TS in markup
177
+
### Pas de TypeScript dans le code HTML
172
178
173
-
You cannot use TypeScript in your template's markup. For example, the following does not work:
179
+
Vous ne pouvez pas utiliser explicitement TypeScript dans les templates HTML. Par exemple, l'exemple suivant n'est pas possible :
174
180
175
181
```svelte
176
182
<script lang="ts">
177
183
let count = 10;
178
184
</script>
179
185
180
-
<h1>Count as string: {count as string}!</h1> <!-- ❌ Does not work -->
186
+
<h1>Count as string: {count as string}!</h1> <!-- ❌ Ne fonctionne pas -->
181
187
{#if count > 4}
182
-
{@const countString: string = count} <!-- ❌ Does not work -->
188
+
{@const countString: string = count} <!-- ❌ Ne fonctionne pas -->
183
189
{countString}
184
190
{/if}
185
191
```
186
192
187
-
### Reactive Declarations
193
+
### Déclarations réactives
188
194
189
-
You cannot type your reactive declarations with TypeScript in the way you type a variable. For example, the following does not work:
195
+
Vous ne pouvez pas typer les déclarations réactives avec TypeScript de la manière dont vous typeriez une variable. Par exemple, le code suivant ne fonctionne pas :
190
196
191
197
```svelte
192
198
<script lang="ts">
193
199
let count = 0;
194
200
195
-
$: doubled: number = count * 2; // ❌ Does not work
201
+
$: doubled: number = count * 2; // ❌ Ne fonctionne pas
196
202
</script>
197
203
```
198
204
199
-
You cannot add a `: TYPE`because it's invalid syntax in this position. Instead, you can move the definition to a `let`statement just above:
205
+
Vous ne pouvez pas utiliser `: TYPE`car cela résulte en une syntaxe invalide. À la place, vous pouvez déplacer le typage sur une instruction `let`juste au dessus :
0 commit comments