Dove TypeScript ti mancherà

Foto di Gavin Allanwood su Unsplash

TypeScript è fantastico. Ho fatto il passaggio alcuni anni fa quando stavo iniziando un nuovo progetto. Non ho guardato indietro da allora. Mi sento molto più sicuro del codice che produco, che funzionerà (principalmente) come mi aspetto. A volte, quella fiducia può tornare a mordermi.

Oggi ho aggiunto alcune funzionalità a una clearFiltersfunzione che abbiamo. Sembra qualcosa del genere:

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

In Filters, sembra qualcosa del genere:

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

Grande! Aggiorniamo la nostra clearFiltersfunzione

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

tranne

Foto di Conor Samuel su Unsplash

Ricevo un'eccezione ogni volta che provo a cancellare i filtri che dice che except.includesnon è una funzione! Che cosa?!

Pensavo di averne davvero superato uno su TypeScript con questo errore. Si scopre che è un errore piuttosto semplice. Ma come per tutti gli errori, è semplice solo una volta che l'hai capito.

Il mio (semplice?) errore

Diamo un'occhiata di Filtersnuovo.

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
}

Per risolvere questo problema, facciamo un altro piccolo aggiornamento:

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

Lezioni imparate

  1. Quando passi una funzione come prop, aggiorna il tipo quando aggiorni la funzione

2. Scrivi test automatici

In questo caso, il mio errore è stato rilevato dai nostri test Cypress sul server di compilazione. Se non fosse per questo, è possibile che questo codice sia stato rilasciato in produzione senza che nessuno si rendesse conto che era rotto. Questi test automatizzati hanno evitato grossi grattacapi, soprattutto prima di una distribuzione in ritardo il venerdì.

Spero che i miei errori possano salvarti da alcuni in futuro! Dove ti sei imbattuto in cose con TypeScript che sono avvenute in modo diverso da come ti aspettavi? Quali lezioni hai imparato lungo la strada?

Suggested posts

Evitare le conseguenze devastanti di un ictus: imparare dal viaggio di una famiglia.

Evitare le conseguenze devastanti di un ictus: imparare dal viaggio di una famiglia.

Introduzione Un ictus è un'emergenza medica che può colpire chiunque in qualsiasi momento. Si verifica quando il flusso sanguigno verso una parte del cervello viene interrotto, portando a un'improvvisa perdita della funzione cerebrale.

Jest: un potente framework di test JavaScript

Jest: un potente framework di test JavaScript

Il test è una parte essenziale dello sviluppo del software. Assicura che il codice sia affidabile, funzioni come previsto e riduce la probabilità di errori.

Related posts

Come salvare il pianeta e fare soldi

Come salvare il pianeta e fare soldi

Quante volte vi è capitato di buttare via una bottiglia di plastica, un barattolo di vetro, una lattina di alluminio o una confezione di energia green senza pensarci due volte? Quante volte hai desiderato di poter ottenere qualcosa in cambio del loro riciclaggio? Se sei come la maggior parte delle persone, la risposta è probabilmente molte volte. Il riciclaggio è spesso visto come una seccatura, un lavoro di routine o un dovere che non porta alcun beneficio immediato o tangibile.

Due anni di design: il buono, il brutto e il cattivo...

Due anni di design: il buono, il brutto e il cattivo...

"Ehi Siri, suona Me Dive di Olivia Dean." Era maggio 2021 quando ho iniziato il mio tirocinio presso la Future Academy Africa ad Akure, in Nigeria.

La persecuzione dei cristiani: il crimine d'odio di cui non parliamo

Dimentica l'islamofobia: i cristiani (e gli ebrei) sono le principali vittime dei crimini di odio religioso.

La persecuzione dei cristiani: il crimine d'odio di cui non parliamo

Qualsiasi mente razionale sa che i circoli politici e mediatici sono dominati dalla sinistra, anche dall'estrema sinistra, uno stato di cose che crea uno squilibrio nel discorso politico. Nel campo della religione, questo squilibrio è chiaramente visibile: giornali e reti di sinistra non si affrettano a difendere la fede cristiana.

La rivoluzione sul posto di lavoro: i migliori esperti discutono di lavoro ibrido e remoto

La rivoluzione sul posto di lavoro: i migliori esperti discutono di lavoro ibrido e remoto

Nel panorama aziendale in rapida evoluzione di oggi, il concetto di lavoro ibrido e remoto ha acquisito uno slancio senza precedenti. Mentre le aziende continuano ad adattarsi alle mutevoli esigenze e aspettative dei propri dipendenti, esperti di vari settori si sono riuniti per discutere i vantaggi, le sfide e il futuro di questo modo di lavorare trasformativo.