Wo TypeScript Sie im Stich lässt

Foto von Gavin Allanwood auf Unsplash

TypeScript ist großartig. Ich habe den Wechsel vor ein paar Jahren gemacht, als ich ein neues Projekt anfing. Ich habe seitdem nicht mehr zurückgeschaut. Ich habe viel mehr Vertrauen in den Code, den ich produziere, dass er (meistens) so funktioniert, wie ich es erwarte. Manchmal kann dieses Vertrauen zurückkommen, um mich zu beißen.

Heute habe ich eine clearFiltersFunktion, die wir haben , um einige Funktionen erweitert . Es sieht ungefähr so ​​aus:

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

Bei Filterssieht es ungefähr so ​​aus:

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

Groß! Lass uns unsere clearFiltersFunktion aktualisieren

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

Außer

Foto von Conor Samuel auf Unsplash

Ich erhalte jedes Mal eine Ausnahme, wenn ich versuche, Filter zu löschen, die besagt, dass dies except.includeskeine Funktion ist! Was zum was?!

Ich dachte, ich hätte mit diesem Fehler wirklich einen mit TypeScript überstanden. Es stellte sich heraus, dass es ein ziemlich einfacher Fehler ist. Aber wie bei allen Fehlern ist es erst einfach, wenn man es herausgefunden hat.

Mein (einfacher?) Fehler

Schauen wir uns noch Filterseinmal an.

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
}

Um das zu beheben, machen wir ein weiteres kleines Update:

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

gewonnene Erkenntnisse

  1. Wenn Sie eine Funktion als Requisite übergeben, aktualisieren Sie den Typ, wenn Sie die Funktion aktualisieren

2. Automatisierte Tests schreiben

In diesem Fall wurde mein Fehler von unseren Cypress-Tests auf dem Build-Server abgefangen. Wenn dies nicht der Fall wäre, wäre dieser Code möglicherweise in die Produktion gegangen, ohne dass jemand bemerkt, dass er kaputt war. Diese automatisierten Tests verhinderten große Kopfschmerzen, insbesondere vor einer Bereitstellung am späten Freitag.

Ich hoffe, meine Fehler können Sie in Zukunft vor einigen retten! Wo sind Sie bei TypeScript auf Dinge gestoßen, die anders als erwartet verlaufen sind? Welche Lektionen haben Sie dabei gelernt?

Suggested posts

Die verheerenden Folgen eines Schlaganfalls vermeiden: Aus der Reise einer Familie lernen.

Die verheerenden Folgen eines Schlaganfalls vermeiden: Aus der Reise einer Familie lernen.

Einleitung Ein Schlaganfall ist ein medizinischer Notfall, der jeden jederzeit treffen kann. Sie tritt auf, wenn die Durchblutung eines Teils des Gehirns gestört ist, was zu einem plötzlichen Verlust der Gehirnfunktion führt.

Jest – Ein leistungsstarkes JavaScript-Test-Framework

Jest – Ein leistungsstarkes JavaScript-Test-Framework

Testen ist ein wesentlicher Bestandteil der Softwareentwicklung. Dadurch wird sichergestellt, dass der Code zuverlässig ist, wie erwartet funktioniert und die Fehlerwahrscheinlichkeit verringert wird.

Related posts

Finanzierung der CO2-Entfernung im Geschäftsjahr 24

Die Aufschlüsselung der Mittelanträge von Carbon180 nach Pfaden

Finanzierung der CO2-Entfernung im Geschäftsjahr 24

Von Alyson Lee, geschäftsführende Beraterin für Regierungsangelegenheiten Der jährliche Bewilligungsprozess der Bundesregierung ist von zentraler Bedeutung für unsere Bemühungen zur Finanzierung der Kohlendioxidentfernung (CDR). Jedes Jahr reicht Carbon180 Anfragen an verschiedene Kongressbüros ein, um zu bestimmen, wohin die Dollars im nächsten Jahr fließen werden.

Zwei Jahre im Design – Das Gute, das Schlechte und das Hässliche…

Zwei Jahre im Design – Das Gute, das Schlechte und das Hässliche…

„Hey Siri, spiel Me Dive von Olivia Dean.“ Es war Mai 2021, als ich mein Praktikum bei der Future Academy Africa in Akure, Nigeria, begann.

„Der Marianengraben enthüllt: Enthüllung der schrecklichen verborgenen Wahrheiten des Abgrunds“

„Der Marianengraben enthüllt: Enthüllung der schrecklichen verborgenen Wahrheiten des Abgrunds“

Einleitung: Willkommen, mutige Leser, zu einer Reise, die uns in die dunkelsten Tiefen unseres Planeten führt. In diesem Blog tauchen wir in die rätselhafte Welt des Marianengrabens ein, decken seine verborgenen Geheimnisse auf und decken die gruseligen Wahrheiten auf, die unter seiner Oberfläche liegen.

Informationen zu Domänennamen finden

Ein Auszug aus Small, Sharp Software Tools von Brian P. Hogan

Informationen zu Domänennamen finden

Wenn Sie eine Anfrage an facebook.com stellen, sucht Ihr Computer nach dem Domänennamen, um diesen in eine IP-Adresse zu übersetzen, damit Ihr Computer diese Verbindung herstellen kann.