Types de base

Références

L'actualité

Librairie

L'information

Introduction

Pour que les programmes soient utiles, nous devons être capables de travailler avec certaines des unités de données les plus simples: nombres, chaînes, structures, valeurs booléennes, etc...

En TypeScript, nous prenons en charge à peu près les mêmes types que ceux attendus en JavaScript, avec un type d'énumération pratique ajouté pour faciliter les choses.

Boolean

Le type de données le plus élémentaire est la valeur simple true / false, que JavaScript et TypeScript appellent une valeur boolean.


Number

Comme en JavaScript, tous les nombres dans TypeScript sont des valeurs à virgule flottante. Ces nombres à virgule flottante ont le type number. En plus des littéraux hexadécimaux et décimaux, TypeScript prend également en charge les littéraux binaires et octaux introduits dans ECMAScript 2015.


String

Travailler avec des données textuelles est un autre aspect fondamental de la création de programmes en JavaScript pour les pages Web et les serveurs. Comme dans d'autres langues, nous utilisons le type string pour faire référence à ces types de données textuels. Tout comme JavaScript, TypeScript utilise également des guillemets doubles (") ou des guillemets simples (') pour entourer les données de chaîne.

Vous pouvez également utiliser des chaînes de modèle, qui peuvent s'étendre sur plusieurs lignes et contenir des expressions incorporées. Ces chaînes sont entourées du caractère backtick / backquote (`) et les expressions incorporées sont de la forme ${ expr }.

Cela équivaut à déclarer sentence comme ceci :


Array

TypeScript, comme JavaScript, vous permet de travailler avec des tableaux de valeurs. Les types de tableaux peuvent être écrits de deux manières. Dans le premier, vous utilisez le type des éléments suivi de [] pour désigner un tableau de ce type d'élément :

La seconde façon utilise un type de tableau générique Array‹elemType› :


Tuple

Les types tuples vous permettent d'exprimer un tableau dans lequel le type d'un nombre fixe d'éléments est connu, mais ne doit pas nécessairement être le même. Par exemple, vous souhaiterez peut-être représenter une valeur sous forme de paire d'un string et d'un number :

Lors de l'accès à un élément avec un index connu, le type correct est récupéré :

Lors de l'accès à un élément en dehors de l'ensemble des index connus, un type d'union est utilisé à la place :

Les types d'union constituent un sujet avancé que nous aborderons dans un chapitre ultérieur.

Enum

Est un ajout utile à l'ensemble standard de types de données à partir de JavaScript enum. Comme dans des langages comme C#, une énumération est un moyen de donner des noms plus conviviaux à des ensembles de valeurs numériques.

Par défaut, les enums commencent à numéroter leurs membres en commençant par 0. Vous pouvez modifier cela en définissant manuellement la valeur de l'un de ses membres. Par exemple, nous pouvons commencer l'exemple précédent à 1 au lieu de 0 :

Ou, même définir manuellement toutes les valeurs dans l'énumération :

Une caractéristique pratique des énumérations est que vous pouvez également passer d'une valeur numérique au nom de cette valeur dans l'énumération. Par exemple, si nous avions la valeur 2 mais ne savions pas exactement à quoi elle correspond dans l'énumération Color ci-dessus, nous pourrions rechercher le nom correspondant :


Any

Nous aurons peut-être besoin de décrire le type de variables que nous ne connaissons pas lorsque nous écrivons une application. Ces valeurs peuvent provenir d'un contenu dynamique, par exemple de l'utilisateur ou d'une bibliothèque tierce. Dans ces cas, nous voulons désactiver la vérification de type et laisser les valeurs passer par les vérifications à la compilation. Pour ce faire, nous les étiquetons avec le type any :

Le type any est un moyen puissant de travailler avec le code JavaScript existant, vous permettant d'activer et de désactiver progressivement la vérification de type lors de la compilation. Vous pouvez vous attendre à ce que Object joue le même rôle que dans d'autres langues. Mais les variables de type Object ne vous permettent que de leur attribuer une valeur, vous ne pouvez pas y appeler des méthodes arbitraires, même celles qui existent :

Le type any est également utile si vous connaissez une partie du type, mais peut-être pas tout. Par exemple, vous pouvez avoir un tableau, mais le tableau a un mélange de différents types :


Void

void est un peu comme le contraire de any : l'absence de tout type. Vous pouvez généralement voir cela comme le type de retour des fonctions qui ne renvoient pas de valeur :

Déclarant des variables de type void n'est pas utile parce que vous ne pouvez affecter undefined ou null :


Null & Undefined

Dans TypeScript, les deux undefined et null ont en fait leurs propres types nommés respectivement undefined et null. Un peu comme void, ils ne sont pas extrêmement utiles par eux-mêmes :

Par défaut null et undefined sont les sous-types de tous les autres types. Cela signifie que vous pouvez assigner null et undefined à quelque chose comme number.

Cependant, lors de l' utilisation du drapeau --strictNullChecks, null et undefined ne sont cessibles à void et leurs types respectifs. Cela permet d'éviter de nombreuses erreurs courantes. Dans les cas où vous souhaitez transmettre un string ou null ou undefined, vous pouvez utiliser le type d'union string | null | undefined.

Nous encourageons l'utilisation de --strictNullChecks lorsque c'est possible, mais aux fins du présent manuel, nous supposerons qu'il est désactivé.

Never

Le type never représente le type de valeurs qui ne se produisent jamais. Par exemple, never est le type de retour pour une expression de fonction ou une expression de fonction flèche qui lève toujours une exception ou une exception qui ne retourne jamais. Les variables acquièrent également le type never restreint par des gardes de type qui ne peuvent jamais être vraies.

Le type never est un sous-type et peut être assigné à chaque type; cependant, aucun type n'est un sous-type de, ni ne peut être assigné never (sauf never lui-même). Même any n'est pas assignable à never.

Quelques exemples de fonctions retournant never :


Objet

object est un type qui représente le type non primitif, à savoir tout ce qui est non number, string, boolean, symbol, null, ou undefined.

Avec le type Object, les API similaires Object.create peuvent être mieux représentées. Par exemple :


Type assertions

Parfois, vous vous retrouvez dans une situation où vous en saurez plus sur une valeur que TypeScript. Cela se produit généralement lorsque vous savez que le type d'une entité peut être plus spécifique que son type actuel.

Les assertions de type sont un moyen de dire au compilateur "faites-moi confiance, je sais ce que je fais". Une assertion de type ressemble à une conversion de type dans d'autres languages, mais n'effectue aucune vérification spéciale ni restructuration des données. Il n'a aucun impact sur l'exécution et est utilisé uniquement par le compilateur. TypeScript suppose que vous, le programmeur, avez effectué les vérifications spéciales dont vous avez besoin.

Les assertions de type ont deux formes. L'une est la syntaxe "angle-crochet":

Et l'autre est la as syntaxe :

Les deux échantillons sont équivalents. L'utilisation de l'un sur l'autre est principalement un choix de préférence; toutefois, lors de l'utilisation de TypeScript avec JSX, seules les assertions as de style sont autorisées.

À propos de let

Vous avez peut-être remarqué que jusqu'à présent, nous avons utilisé le mot-clé let à la place du mot-clé de JavaScript var que vous connaissez peut-être mieux. Le mot-clé let est en réalité une construction JavaScript plus récente mise à disposition par TypeScript. Nous discuterons des détails plus tard, mais de nombreux problèmes courants de JavaScript sont résolus en utilisant let, vous devriez donc les utiliser à la place de var chaque fois que cela est possible.