Où TypeScript vous échouera

Photo de Gavin Allanwood sur Unsplash

TypeScript est génial. J'ai fait le changement il y a quelques années alors que je démarrais un nouveau projet. Je n'ai pas regardé en arrière depuis. Je me sens beaucoup plus confiant dans le code que je produis, qu'il fonctionnera (principalement) comme je l'attends. Parfois, cette confiance peut revenir me mordre.

Aujourd'hui, j'ajoutais des fonctionnalités à une clearFiltersfonction que nous avons. Cela ressemble à quelque chose comme ça :

const [activeFilters, setActiveFilters] = useState<Filter[]>(initialFilters)
const clearFilters = () => {
   setActiveFilters([])
}

Dans Filters, cela ressemble à ceci :

interface Props {
  filters: Filter[]
  clearFilters: () => void
}
const Filters: React.FC<Props> = ({
  return (
    <div>
      ... the filters
<button
        onClick={clearFilters}
      >
        Clear All
      </button>
    </div>
  )
})

Génial! Mettons à jour notre clearFiltersfonction

const clearFilters = (except?: FilterType[]) => {
  if(except){
    setActiveFilters(activeFilters.filter((f) => except.includes(f.type))  
  } else {
    setActiveFilters([])
  }
}

Sauf

Photo de Conor Samuel sur Unsplash

Je reçois une exception à chaque fois que j'essaie d'effacer les filtres qui dit que ce except.includesn'est pas une fonction ! Qu'est-ce que quoi ?!

Je pensais en avoir vraiment un sur TypeScript avec cette erreur. Il s'avère que c'est une erreur assez simple. Mais comme pour toutes les erreurs, ce n'est simple qu'une fois que vous l'avez compris.

Mon (simple ?) erreur

Regardons Filtersencore.

interface Props {
  filters: Filter[]
  clearFilters: () => void
}
const Filters: React.FC<Props> = ({
  return (
    <div>
      ... the filters
<button
        onClick={clearFilters}
      >
        Clear All
      </button>
    </div>
  )
})

interface Props {
  filters: Filter[]
  clearFilters: (except?: FilterType[]) => void
}

Pour résoudre ce problème, nous effectuons une autre petite mise à jour :

<button onClick={() => clearFilters()}>All Clear</button>

Leçons apprises

  1. Lorsque vous passez une fonction en tant qu'accessoire, mettez à jour le type lorsque vous mettez à jour la fonction

2. Écrire des tests automatisés

Dans ce cas, mon erreur a été détectée par nos tests Cypress sur le serveur de build. Sinon, il est possible que ce code ait pu être mis en production sans que personne ne se rende compte qu'il était cassé. Ces tests automatisés ont évité d'importants maux de tête, en particulier avant un déploiement tard un vendredi.

J'espère que mes erreurs pourront vous en sauver à l'avenir ! Où avez-vous rencontré des choses avec TypeScript qui se sont produites différemment de ce à quoi vous vous attendiez ? Quelles leçons avez-vous apprises en cours de route ?

Suggested posts

Éviter les conséquences dévastatrices d'un accident vasculaire cérébral : apprendre du parcours d'une famille.

Éviter les conséquences dévastatrices d'un accident vasculaire cérébral : apprendre du parcours d'une famille.

Introduction Un accident vasculaire cérébral est une urgence médicale qui peut frapper n'importe qui à tout moment. Elle survient lorsque le flux sanguin vers une partie du cerveau est perturbé, entraînant une perte soudaine de la fonction cérébrale.

Jest - Un framework de test JavaScript puissant

Jest - Un framework de test JavaScript puissant

Les tests sont une partie essentielle du développement logiciel. Il garantit que le code est fiable, fonctionne comme prévu et réduit la probabilité d'erreurs.

Related posts

Financement de l'élimination du carbone au cours de l'exercice 24

La répartition des demandes de crédits de Carbon180 selon les filières

Financement de l'élimination du carbone au cours de l'exercice 24

Par Alyson Lee, conseillère en gestion des affaires gouvernementales Le processus annuel d'affectation des crédits du gouvernement fédéral est au cœur de nos efforts pour financer l'élimination du dioxyde de carbone (CDR). Chaque année, Carbon180 soumet des demandes à divers bureaux du Congrès pour aider à orienter les flux de dollars de l'année prochaine.

Qu'est-ce qui rend un podcast influent ?

Qu'est-ce qui rend un podcast influent&nbsp;?

La semaine dernière, j'ai remarqué un communiqué de presse, envoyé via PressGazette (un site Web d'information britannique). L'article annonçait qu'Acast, la société d'hébergement et de publicité de podcasts de Scandi, dirigerait un consortium d'éditeurs "probablement les plus influents" du podcasting.

3 façons éprouvées d'améliorer vos compétences en écriture

Les avantages de l'écriture et les stratégies pour vous aider à le faire

3 façons éprouvées d'améliorer vos compétences en écriture

En 2022, avec la sortie de GPT-3, la compétence en écriture semble devenir moins importante. Avec l'IA, les personnes ayant une mauvaise écriture peuvent également générer du personnel de qualité.

Deux ans en design - Le bon, le mauvais et le laid…

Deux ans en design - Le bon, le mauvais et le laid…

"Hey Siri, joue Me Dive d'Olivia Dean." C'était en mai 2021 lorsque j'ai commencé mon stage à la Future Academy Africa à Akure, au Nigeria.