Lorsque nous discutons des fonctionnalités les plus sous-estimées de TypeScript, celle qui passe souvent inaperçue est l'affirmation as const. Cette fonctionnalité est incroyablement utile dans divers scénarios, offrant des avantages significatifs aux développeurs.
Pour commencer, définissons ce que fait const. Imaginez que vous ayez un objet comme celui-ci :
const routes = { home: "/home", profile: "/profile", notifications: "/notification", };
Si vous survolez les propriétés des routes, vous remarquerez qu'elles sont saisies sous forme de chaîne. Par exemple, routes.home est saisi sous forme de chaîne et non de "/home". En effet, TypeScript suppose que ces propriétés peuvent changer, il les déduit donc comme des chaînes mutables.
Maintenant, considérons une fonction qui devrait accepter uniquement ces itinéraires spécifiques. Vous pouvez définir les types comme ceci :
function changeRoute(route: "home" | "profile" | "notifications") { // navigate to route }
Cette approche fonctionne, mais elle est répétitive et sujette aux erreurs. Si vous ajoutez une nouvelle route, vous devez mettre à jour la définition de type de la fonction, ce qui n'est pas idéal.
C'est ici que as const entre en jeu. En utilisant as const, vous pouvez rendre l'objet immuable et TypeScript déduira les types littéraux au lieu d'une simple chaîne.
const routes = { home: "/home", profile: "/profile", notifications: "/notification", } as const;
Maintenant, routes.home est saisi comme "/home", routes.notifications comme "/notifications", et ainsi de suite. Cette immuabilité garantit que ces propriétés ne peuvent pas être modifiées et TypeScript reconnaît leurs valeurs spécifiques.
Intégrons as const dans une fonction :
function changeRoute(route: typeof routes[keyof typeof routes]) { // navigate to route }
Ici, typeof routes obtient le type de l'objet routes, et keyof typeof routes extrait les clés, ce qui donne les types exacts des valeurs de route. Cela rend la fonction adaptable à toute modification de l'objet routes sans avoir besoin de mises à jour répétitives.
Un autre aspect puissant d'as const est la manière dont il permet l'extraction de types. Par exemple:
type Routes = (typeof routes)[keyof typeof routes];
Ce type de définition extrait dynamiquement les valeurs de l'objet routes, rendant la fonction plus maintenable et réduisant la redondance.
L'assertion as const dans TypeScript est une fonctionnalité polyvalente et puissante qui peut améliorer considérablement la sécurité des types et réduire la redondance dans votre code. En rendant les objets immuables et en permettant une inférence de type précise, cela simplifie la maintenance et l'extension des bases de code. Essayez-le et vous verrez comment il peut améliorer vos projets TypeScript !
Bon codage !
[Divulgation : cet article est un effort collaboratif, combinant mes propres idées avec l'aide de ChatGPT pour une meilleure articulation.]
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3