Paramètres optionnels avec '?'
Fait partie de la section Introduction à TypeScript du Journey JavaScript de Coddy. Leçon 25 sur 73.
Parfois, vous souhaitez créer des fonctions où certains paramètres ne sont pas toujours requis. TypeScript fournit la syntaxe ? pour marquer les paramètres comme optionnels, ce qui signifie que les appelants peuvent choisir de les fournir ou non lors de l'appel de la fonction.
Pour rendre un paramètre optionnel, vous ajoutez un point d'interrogation après le nom du paramètre mais avant l'annotation de type :
function greet(name: string, greeting?: string): string {
if (greeting) {
return greeting + ", " + name;
}
return "Hello, " + name;
}Dans cet exemple, name est requis alors que greeting est optionnel. Vous pouvez appeler cette fonction avec seulement le nom (greet("Alice")) ou avec les deux paramètres (greet("Alice", "Good morning")). À l'intérieur de la fonction, les paramètres optionnels ont le type string | undefined, vous devriez donc vérifier s'ils existent avant de les utiliser.
Défi
FacileCréez une fonction nommée createUserProfile qui prend deux paramètres : username de type string (obligatoire) et displayName de type string (optionnel). La fonction doit retourner une chaîne de caractères avec une annotation de type de retour explicite.
Lorsque les deux paramètres sont fournis, la fonction doit retourner : "Profile: [displayName] (@[username])"
Lorsque seul le nom d'utilisateur est fourni, la fonction doit retourner : "Profile: @[username]"
Créez une autre fonction nommée calculateDiscount qui prend deux paramètres : price de type number (obligatoire) et membershipLevel de type string (optionnel). La fonction doit retourner un nombre avec une annotation de type de retour explicite.
Lorsque les deux paramètres sont fournis, la fonction doit retourner le prix réduit de 10 % (multiplier par 0.9).
Lorsque seul le prix est fourni, la fonction doit retourner le prix d'origine inchangé.
Testez vos fonctions en les appelant avec les valeurs suivantes et en affichant les résultats :
- Appelez
createUserProfileavec"john_doe"et"John Doe" - Appelez
createUserProfileavec seulement"jane_smith" - Appelez
calculateDiscountavec100et"premium" - Appelez
calculateDiscountavec seulement75
Affichez chaque résultat sur une ligne distincte dans l'ordre spécifié ci-dessus.
Essayez vous-même
// TODO : Écrivez votre code ici
// Créez la fonction createUserProfile avec les annotations de type appropriées
// Créez la fonction calculateDiscount avec les annotations de type appropriées
// Testez les fonctions et affichez les résultatsCette 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 objetsEntraînez-vous par vous-même : Compilateur JavaScript en ligne