Assertions de type
Fait partie de la section Introduction à TypeScript du Journey JavaScript de Coddy — leçon 68 sur 73.
Parfois, TypeScript n'a pas assez d'informations pour déterminer le type exact d'une valeur, mais vous, en tant que développeur, en savez plus sur ce qu'est réellement cette valeur. Les assertions de type vous permettent de dire à TypeScript « faites-moi confiance, je sais que cette valeur est de ce type spécifique ».
TypeScript propose deux syntaxes pour les assertions de type. La syntaxe as est l'approche la plus courante :
let data: unknown = '{"name": "John", "age": 30}';
let user = data as string;Vous pouvez également utiliser la syntaxe avec chevrons, bien qu'elle soit moins courante dans le TypeScript moderne :
let data: unknown = '{"name": "John", "age": 30}';
let user = <string>data;Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Défi
FacileCréez une fonction qui traite les données d'une simulation d'API externe. Vous travaillerez avec des valeurs de type unknown et utiliserez des assertions de type pour accéder en toute sécurité à leurs propriétés.
Créez une variable apiResponse de type unknown et affectez-lui la chaîne JSON suivante :
{"userId": 42, "username": "alice_dev", "isActive": true}Créez une fonction nommée processUserData qui :
- Prend un paramètre
datade typeunknown - Utilise une assertion de type pour traiter
datacomme unestring - Analyse la chaîne JSON à l'aide de
JSON.parse() - Utilise une autre assertion de type pour traiter le résultat analysé comme un objet avec les propriétés
userId(number),username(string) etisActive(boolean) - Retourne une chaîne formatée :
"User [userId]: [username] (Active: [isActive])" - A un type de retour explicite
string
Créez des données de test supplémentaires :
- Créez
secondApiResponsede typeunknownavec la chaîne JSON :{"userId": 15, "username": "bob_admin", "isActive": false} - Créez
thirdApiResponsede typeunknownavec la chaîne JSON :{"userId": 99, "username": "charlie_user", "isActive": true}
Testez votre fonction et affichez les sorties suivantes :
- Appelez
processUserDataavecapiResponseet affichez le résultat - Appelez
processUserDataavecsecondApiResponseet affichez le résultat - Appelez
processUserDataavecthirdApiResponseet affichez le résultat
Aide-mémoire
Les assertions de type vous permettent d'indiquer à TypeScript le type spécifique d'une valeur lorsque vous en savez plus que ce que TypeScript peut inférer.
Utilisez la syntaxe as (la plus courante) :
let data: unknown = '{"name": "John", "age": 30}';
let user = data as string;Syntaxe alternative avec des chevrons :
let data: unknown = '{"name": "John", "age": 30}';
let user = <string>data;Essayez vous-même
// Créer les variables de réponse de l'API
const apiResponse: unknown = '{"userId": 42, "username": "alice_dev", "isActive": true}';
const secondApiResponse: unknown = '{"userId": 15, "username": "bob_admin", "isActive": false}';
const thirdApiResponse: unknown = '{"userId": 99, "username": "charlie_user", "isActive": true}';
// TODO : Créer la fonction processUserData ici
// Tester la fonction et afficher les résultats
console.log(processUserData(apiResponse));
console.log(processUserData(secondApiResponse));
console.log(processUserData(thirdApiResponse));Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Introduction à TypeScript
1Premiers pas avec TS
Qu'est-ce que TypeScript ?Pourquoi utiliser TypeScript ?Votre premier code TypeScriptProcessus de compilation et erreursRécapitulatif : Introduction à TS4Travailler avec les fonctions
Typage des paramètres et valeurs de retourTypage des fonctions fléchéesLe type de retour 'void'Paramètres optionnels avec '?'Valeurs par défaut des paramètresTypage des paramètres RestDéfinir des types de fonctionsRécapitulatif : Créer des fonctions typées2Types fondamentaux
Types de base : str, num, booleanLe type 'any' : la porte de sortieLe type 'unknown'Travailler avec 'null' et 'undef'L'inférence de type en actionAnnotations de type explicitesRécapitulatif : Pratique des types fondamentaux5Types : Alias, Unions & Intersections
Alias de types pour les primitifsTypes d'union ('|')Travailler avec les types d'unionTypes littérauxTypes d'intersection ('&')Combiner des alias de typesRécapitulatif : Combinaisons de types avancées3Structure de données : Tableaux et Tuples
Tableaux typésModificateur 'readonly' pour les tableauxQu'est-ce qu'un tuple ?Déclaration et accès aux tuplesDéstructuration de tuplesTuples readonlyTableaux typés multidimensionnelsSpread operator avec les tableauxRécapitulatif : Tableaux et tuples6Typage des objets et interfaces
Annotations de type d'objet en ligneAlias de type pour les objetsIntroduction aux interfacesInterfaces vs Alias de typePropriétés optionnelles et ReadonlyÉtendre les interfaces et les typesAjout de méthodes aux interfacesRécapitulatif : Définir la structure des objets