Romain Durand

🎅 Advent of TypeScript 2024 - Jour 1

Le 01 décembre 2024 à 12:34

The Reindeer Have Had Enough - On démarre le défi TypeScript de Noël !

https://www.adventofts.com/events/2024/1

Cette année comme j'ai un peu de temps de libre, je me lance dans Advent Of TypeScript !

Je l'ai découvert en début d'année 2024 quand j'ai voulu commencer à me former à l'écriture de systèmes de types avancés et ça avait été extrêmement formateur. On ignore souvent l'étendue de son incompétence dans un domaine, et cette série d'exercice avait permis de l'explorer, de faire les recherches et lectures nécessaires pour la réduire. D'autant que faisant ce défi longtemps après sa clôture, j'avais accès aux solutions des autres participant·e·s, si vraiment je perdais trop de temps sur un exercice.

Je continue avec le même objectif de découvrir de nouvelles techniques et syntaxes que je vais tenter de documenter ici, et peut-être que je reviendrai en janvier 2025 sur les solutions proposées par la communauté pour comparer les approches. Car les solutions recevant le plus de votes sont souvent celles qui sont les plus concises, alors que j'ai tendance à découper mes solutions en sous-types utilitaires pour des raisons de simplicité d'écriture, de lisibilité, et de maintenabilité.

Mais quand je vois la complexité que certaines librairies arrivent à atteindre, par exemple en construisant avec le système de type des utilitaires qui permettent de parser une requête GraphQL, je comprends aussi l'intérêt d'avoir des solutions concises, peut-être moins lisibles (peut-être un manque d'entraînement de mon coté), mais qui micro-optimisent la performance dans les moindres recoins du code, histoire que l'évaluation des types ne prenne pas des heures dans l'éditeur.

Solution

Aucune difficulté aujourd'hui, puisque l'exercice ne présente que l'interface, avec l'histoire (que je ne lis presque jamais, désolé pour l'auteur), l’énoncé, les tests et les indices.

La solution est donnée dans l'énoncé : il suffit de mettre number à la place de unknown

type Demand = number;

À demain ! 🎄