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
## Important 2.2 Change Notice for TS + webpack 2 users
7
+
## Changements importants dans la 2.2 pour les utilisateurs TS + webpack 2
8
8
9
-
<pclass="tip">**Cette page est en cours de traduction française. Revenez une autre fois pour lire une traduction achevée ou [participez à la traduction française ici](https://github.com/vuejs-fr/vuejs.org).**</p><p>In Vue 2.2 we introduced dist files exposed as ES modules, which will be used by default by webpack 2. Unfortunately, this introduced an unintentional breaking change because with TypeScript + webpack 2, `import Vue = require('vue')` will now return a synthetic ES module object instead of Vue itself.</p>
9
+
Dans Vue 2.2 nous avons introduit des fichiers de distribution en tant que modules ES, qui seront utilisés par défaut par webpack 2. Malheureusement, cela a introduit un changement de non retrocompatiblilité non souhaité car avec TypeScript + webpack 2, `import Vue = require('vue')`retourne maintenant un objet module ES synthétique au lieu de Vue lui-même.
10
10
11
-
We plan to move all official declarations to use ES-style exports in the future. Please see [Recommended Configuration](#Recommended-Configuration) below on a future-proof setup.
11
+
Nous avons prévu de bouger toutes les déclarations officielles d'export dans le style ES dans le futur. Veuillez consulter [la configuration recommandée](#Configuration-recommandee) ci-dessous qui est parée pour les évolutions futures.
12
12
13
-
## Official Declaration in NPM Packages
13
+
## Déclaration officielle dans les packages npm
14
14
15
-
A static type system can help prevent many potential runtime errors, especially as applications grow. That's why Vue ships with [official type declarations](https://github.com/vuejs/vue/tree/dev/types)for[TypeScript](https://www.typescriptlang.org/) - not only in Vue core, but also for[vue-router](https://github.com/vuejs/vue-router/tree/dev/types)and[vuex](https://github.com/vuejs/vuex/tree/dev/types) as well.
15
+
Un système de typage statique peut aider à prévenir des erreurs d'exécutions potentielles, et particulièrement quand les applications grandissent. C'est pourquoi Vue est fourni avec des déclarations de types officielles]((https://github.com/vuejs/vue/tree/dev/types) pour[TypeScript](https://www.typescriptlang.org/), et pas seulement pour le cœur de Vue, mais aussi pour[vue-router](https://github.com/vuejs/vue-router/tree/dev/types)et[vuex](https://github.com/vuejs/vuex/tree/dev/types).
16
16
17
-
Since these are [published on NPM](https://unpkg.com/vue/types/), and the latest TypeScript knows how to resolve type declarations in NPM packages, this means when installed via NPM, you don't need any additional tooling to use TypeScript with Vue.
17
+
Puisque ceux-ci sont [publiés sur npm](https://unpkg.com/vue/types/), et que la dernière version de TypeScript sait comment résoudre des déclarations de type dans des packages npm, cela signifie qu'installer ceux-ci via npm ne requiert aucun outil supplémentaire pour utiliser TypeScript avec Vue.
18
18
19
-
## Recommended Configuration
19
+
## Configuration recommandée
20
20
21
21
```js
22
22
// tsconfig.json
23
23
{
24
24
"compilerOptions": {
25
-
// ... other options omitted
25
+
// ... les autres options sont omises
26
26
"allowSyntheticDefaultImports":true,
27
27
"lib": [
28
28
"dom",
@@ -33,39 +33,39 @@ Since these are [published on NPM](https://unpkg.com/vue/types/), and the latest
33
33
}
34
34
```
35
35
36
-
Note the `allowSyntheticDefaultImports`option allows us to use the following:
36
+
Notez que l'option `allowSyntheticDefaultImports`nous permet d'utiliser l'import comme ceci :
37
37
38
38
```js
39
39
importVuefrom'vue'
40
40
```
41
41
42
-
instead of:
42
+
plutôt que comme cela :
43
43
44
44
```js
45
45
import Vue = require('vue')
46
46
```
47
47
48
-
The former (ES module syntax) is recommended because it is consistent with recommended plain ES usage, and in the future we are planning to move all official declarations to use ES-style exports.
48
+
La premiere (syntaxe de module ES) est recommandée car elle est cohérente avec les recommandations d'usage ES. Nous planifions à l'avenir de changer toutes les déclarations officielles pour utiliser les exports dans le style ES.
49
49
50
-
In addition, if you are using TypeScript with webpack 2, the following is also recommended:
50
+
De plus, si vous utilisez TypeScript avec webpack 2, les options suivantes sont également recommandées :
51
51
52
52
```js
53
53
{
54
54
"compilerOptions": {
55
-
// ... other options omitted
55
+
// ... les autres options sont omises
56
56
"module":"es2015",
57
57
"moduleResolution":"node"
58
58
}
59
59
}
60
60
```
61
61
62
-
This tells TypeScript to leave the ES module import statements intact, which in turn allows webpack 2 to take advantage of ES-module-based tree-shaking.
62
+
Ceci demande à TypeScript de laisser les instructions d'import de modules ES intactes, ce qui permet à webpack 2 de tirer parti du *tree-shaking* basé sur les modules ES.
63
63
64
-
See [TypeScript compiler options docs](https://www.typescriptlang.org/docs/handbook/compiler-options.html)for more details.
64
+
Voir [les options de compilation TypeScript](https://www.typescriptlang.org/docs/handbook/compiler-options.html)pour plus de détails.
65
65
66
-
## Using Vue's Type Declarations
66
+
## Utiliser la déclaration de type Vue
67
67
68
-
Vue's type definition exports many useful [type declarations](https://github.com/vuejs/vue/blob/dev/types/index.d.ts). For example, to annotate an exported component options object (e.g. in a `.vue` file):
68
+
La définition de type de Vue exporte de nombreuses [déclarations de type](https://github.com/vuejs/vue/blob/dev/types/index.d.ts) utiles. Par exemple, pour annoter l'objet d'options d'un composant exporté (par ex. dans un fichier `.vue`) :
69
69
70
70
```ts
71
71
importVue, { ComponentOptions } from'vue'
@@ -76,14 +76,14 @@ export default {
76
76
} asComponentOptions<Vue>
77
77
```
78
78
79
-
## Class-Style Vue Components
79
+
## Composants Vue sous forme de classe
80
80
81
-
Vue component options can easily be annotated with types:
81
+
Les options de composant Vue peuvent facilement être annotées avec des types:
Malheureusement, il y a quelques limitations ici :
112
112
113
-
-__TypeScript can't infer all types from Vue's API.__ For example, it doesn't know that the `message`property returned in our`data`function will be added to the `MyComponent` instance. That means if we assigned a number or boolean value to `message`, linters and compilers wouldn't be able to raise an error, complaining that it should be a string.
113
+
-__TypeScript ne peut pas déduire tous les types de l'API de Vue__ Par exemple, il ne sait pas que la propriété `message`renvoyée dans notre fonction`data`sera ajoutée à l'instance `MyComponent`. Cela signifie que si nous attribuons un nombre ou une valeur booléenne à `message`, les linters et les compilateurs ne seraient pas en mesure d'émettre une erreur, en pointant le fait qu'il s'agit normalement d'une chaîne de caractères.
114
114
115
-
-Because of the previous limitation, __annotating types like this can be verbose__. The only reason we have to manually declare `message`as a string is because TypeScript can't infer the type in this case.
115
+
-À cause de la précédente limitation, __l'annotation de types peut être verbeuse__. La seule raison pour laquelle nous devons déclarer manuellement `message`en tant que chaîne de caractères est parce que TypeScript ne peut pas déduire le type dans ce cas.
116
116
117
-
Fortunately, [vue-class-component](https://github.com/vuejs/vue-class-component)can solve both of these problems. It's an official companion library that allows you to declare components as native JavaScript classes, with a `@Component` decorator. As an example, let's rewrite the above component:
117
+
Fort heureusement, [vue-class-component](https://github.com/vuejs/vue-class-component)peut résoudre ses deux problèmes. C'est une bibliothèque de support officielle qui permet de déclarer les composants comme des classes natives en JavaScript, avec le décorateur `@Component`. Pour l'exemple, ré-écrivons le composant ci-dessus :
118
118
119
119
```ts
120
120
importVuefrom'vue'
121
121
importComponentfrom'vue-class-component'
122
122
123
-
//The @Component decorator indicates the class is a Vue component
123
+
//Le décorateur @Component indique que la classe est un composant Vue
124
124
@Component({
125
-
//All component options are allowed in here
125
+
//Toutes les options de composant sont autorisées ici.
//Initial data can be declared as instance properties
130
-
message:string='Hello!'
129
+
//Les données initiales peuvent être déclarées comme des propriétés de l'instance
130
+
message:string='Bonjour !'
131
131
132
-
//Component methods can be declared as instance methods
132
+
//Les méthodes peuvent être déclarées comme des méthodes d'instance
133
133
onClick ():void {
134
134
window.alert(this.message)
135
135
}
136
136
}
137
137
```
138
138
139
-
With this syntax alternative, our component definition is not only shorter, but TypeScript can also infer the types of`message`and`onClick`without explicit interface declarations. This strategy even allows you to handle types for computed properties, lifecycle hooks, and render functions. For full usage details, see [the vue-class-component docs](https://github.com/vuejs/vue-class-component#vue-class-component).
139
+
Avec cette syntaxe alternative, nos définitions de composant ne sont pas seulement plus courtes, mais TypeScript peut aussi connaître les types de`message`et`onClick`avec des interfaces de déclarations explicites. Cette stratégie peut même vous permettre de gérer des types pour les propriétés calculées, les hooks de cycle de vie et les fonctions de rendu. Pour une utilisation plus détaillée, référez-vous à [la documentation de vue-class-component](https://github.com/vuejs/vue-class-component#vue-class-component).
0 commit comments