TypeScript
décrivent la forme des objets JavaScript
au niveau du type.
Un exemple particulièrement spécifique à TypeScript
est le concept de "déclaration en fusion".
Comprendre ce concept vous donnera un avantage lorsque vous utiliserez du code JavaScript
existant.
Cela ouvre également la porte à des concepts d'abstraction plus avancés.TypeScript
, une déclaration crée des entités dans au moins un des trois groupes suivants : espace de nom, type ou valeur.
Les déclarations créant un espace de noms créent un espace de noms, qui contient les noms auxquels on accède à l'aide d'une notation en pointillé.
Les déclarations de création de type ne font que cela: elles créent un type visible avec la forme déclarée et lié au nom donné.
Enfin, les déclarations de création de valeur créent des valeurs visibles dans le code JavaScript
de sortie.Type de déclaration | Espace de noms | Type | Veleur |
---|---|---|---|
Espace de noms | X | X | |
Classe | X | X | |
Enum | X | X | |
Interface | X | ||
Type Alias | X | ||
Fonction | X | ||
Variable | X |
A
d'interface avec une interface plus récente A
,
la deuxième interface aura une priorité plus élevée que la première.Animals
dans cet exemple :haveMuscles
n'est pas exporté, seule la fonction animalsHaveMuscles
qui partage le même espace de nom non fusionné peut voir le symbole.
La fonction doAnimalsHaveMuscles
, même si elle fait partie de l'espace Animal
de noms fusionné, ne peut pas voir ce membre non exporté.TypeScript
utilise cette fonctionnalité pour modéliser certains modèles en JavaScript
ainsi que d'autres langages de programmation.AlbumLabel
pour que la classe fusionnée puisse le voir.
Le résultat final est une classe gérée à l'intérieur d'une autre classe.
Vous pouvez également utiliser des espaces de noms pour ajouter plus de membres statiques à une classe existante.JavaScript
consistant à créer une fonction,
puis à l'étendre davantage en ajoutant des propriétés à la fonction. TypeScript
utilise la fusion de déclarations pour construire
des définitions comme celle-ci d'une manière sûre pour le type.TypeScript
. Actuellement, les classes ne peuvent pas fusionner avec d'autres classes ou avec des variables.
Pour plus d'informations sur l'imitation de la fusion de classes, voir la section Mixins
dans TypeScript
.JavaScript
ne prennent pas en charge la fusion,
vous pouvez corriger les objets existants en les important puis en les mettant à jour.
Regardons un exemple de jouet observable :TypeScript
, mais le compilateur ne le sait pas Observable.prototype.map
.
Vous pouvez utiliser l'augmentation de module pour en informer le compilateur :import
/ export
. Voir Modules pour plus d'informations.
Ensuite, les déclarations d'une augmentation sont fusionnées comme si elles avaient été déclarées dans le même fichier que le fichier d'origine.
Cependant, vous ne pouvez pas déclarer de nouvelles déclarations de niveau supérieur dans l'augmentation, mais simplement des correctifs pour les déclarations existantes.