Onde o TypeScript irá falhar com você

Foto de Gavin Allanwood no Unsplash

TypeScript é ótimo. Eu fiz a mudança alguns anos atrás, quando estava começando um novo projeto. Não olhei para trás desde então. Sinto-me muito mais confiante no código que produzo, de que funcionará (principalmente) como espero. Às vezes, essa confiança pode voltar para me morder.

Hoje, eu estava adicionando algumas funcionalidades a uma clearFiltersfunção que temos. É mais ou menos assim:

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

Em Filters, é mais ou menos assim:

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

Excelente! Vamos atualizar nossa clearFiltersfunção

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

Exceto

Foto de Conor Samuel no Unsplash

Estou recebendo uma exceção toda vez que tento limpar os filtros que dizem que except.includesnão é uma função! O que o quê ?!

Achei que realmente havia superado o TypeScript com este erro. Acontece que é um erro bem simples. Mas, como acontece com todos os erros, só é simples depois de você ter descoberto.

Meu (simples?) Erro

Vamos olhar Filtersnovamente.

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
}

Para corrigir isso, fazemos outra pequena atualização:

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

Lições aprendidas

  1. Ao passar uma função como um adereço, atualize o tipo ao atualizar a função

2. Escreva testes automatizados

Nesse caso, meu erro foi detectado por nossos testes Cypress no servidor de compilação. Se não fosse por isso, é possível que este código pudesse ter sido lançado em produção sem que ninguém percebesse que estava quebrado. Esses testes automatizados evitaram grandes dores de cabeça, especialmente antes de uma implantação na noite de uma sexta-feira.

Espero que meus erros possam salvá-lo de alguns no futuro! Onde você encontrou coisas com o TypeScript que aconteceram de maneira diferente do que você esperava? Que lições você aprendeu ao longo do caminho?

Suggested posts

Evitando as consequências devastadoras de um derrame: aprendendo com a jornada de uma família.

Evitando as consequências devastadoras de um derrame: aprendendo com a jornada de uma família.

Introdução O AVC é uma emergência médica que pode atingir qualquer pessoa a qualquer momento. Ocorre quando o fluxo sanguíneo para uma parte do cérebro é interrompido, levando a uma perda repentina da função cerebral.

Jest — Uma poderosa estrutura de teste de JavaScript

Jest — Uma poderosa estrutura de teste de JavaScript

O teste é uma parte essencial do desenvolvimento de software. Ele garante que o código seja confiável, funcione conforme o esperado e reduza a probabilidade de erros.

Related posts

O que você pode fazer em sua temporada de espera (esperando para conseguir seu primeiro emprego em tecnologia)

O que você pode fazer em sua temporada de espera (esperando para conseguir seu primeiro emprego em tecnologia)

Mudar para uma nova carreira pode ser extremamente desafiador se você tentar fazer isso sozinho. É importante encontrar parceiros de responsabilidade que estejam no mesmo nível de aprendizado que você, que compartilhem objetivos, tenacidade e motivação semelhantes.

A lenta erosão: revelando como as pessoas desperdiçam em suas carreiras

A lenta erosão: revelando como as pessoas desperdiçam em suas carreiras

No mundo acelerado e competitivo de hoje, a carreira desempenha um papel significativo no crescimento pessoal, na estabilidade financeira e na satisfação geral com a vida. No entanto, muitos indivíduos encontram-se presos em um ciclo implacável de estagnação e insatisfação, definhando gradualmente em suas vidas profissionais.

A perseguição aos cristãos: o crime de ódio do qual não falamos

Esqueça a islamofobia: cristãos (e judeus) são as principais vítimas de crimes de ódio religioso.

A perseguição aos cristãos: o crime de ódio do qual não falamos

Qualquer mente racional sabe que os círculos políticos e midiáticos são dominados pela esquerda, até mesmo pela extrema esquerda, um estado de coisas que cria um desequilíbrio no discurso político. No campo da religião, esse desequilíbrio é bem visível: jornais e redes de esquerda não se apressam em defender a fé cristã.

"A Fossa das Marianas Revelada: Revelando as Terríveis Verdades Ocultas do Abismo"

"A Fossa das Marianas Revelada: Revelando as Terríveis Verdades Ocultas do Abismo"

Introdução:Bem-vindos, corajosos leitores, a uma jornada que nos levará às profundezas mais sombrias do nosso planeta. Neste blog, mergulhamos no mundo enigmático da Fossa das Marianas, revelando seus segredos ocultos e revelando as verdades arrepiantes que se escondem sob sua superfície.