Sinon pour répondre à ta question, tu injectes de l'html (buttons[i]) dans ta fonction filter et tu check si ton element a une classe égale à cet html (elements[j].classList.contains(el)).
En somme t'es en train de faire elements[j].classList.contains(buttons[i])) = aucun sens.
Avec typescript t'aurais eu à écrire
const filter = (el: HTMLDivElement) =>{
for(j=0;j<elements.length;j++){
if(elements[j].classList.contains(el)){
elements[j].classList.toggle('revealed');
}
else {
elements[j].classList.remove('revealed');
elements[j].classList.add('hidden');
}
}
}
et ça t'aurait tout de suite indiqué que ta comparaison n'avait pas de sens
en espérant que ça t'aide pour la suite 
Message édité le 04 juillet 2022 à 00:21:32 par soupeur66