Olá, eu não entendi muito bem, porque usar is, entendo que o == seja para comparar tipos e o state e o HomeError sejam de tipos diferentes, mas qual é o tipo do state e do HomeError, sei que o HomeError é uma classe
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Olá, eu não entendi muito bem, porque usar is, entendo que o == seja para comparar tipos e o state e o HomeError sejam de tipos diferentes, mas qual é o tipo do state e do HomeError, sei que o HomeError é uma classe
O operador is é usado para verificar se um objeto é de um determinado tipo. O operador == é usado para comparar o valor de dois objetos.
No código que você forneceu, state é uma variável do tipo State. HomeError é uma classe.
A linha if (state is HomeError) verifica se state é um objeto do tipo HomeError. Se for, o código no bloco if será executado. Se não for, o código no bloco else será executado.
A linha if (state == HomeError) verifica se o valor de state é igual ao valor de um objeto do tipo HomeError. Se for, o código no bloco if será executado. Se não for, o código no bloco else será executado.
No seu caso, você está usando o operador is porque só quer saber se state é um objeto do tipo HomeError. Você não está interessado em comparar o valor de state com o valor de um objeto do tipo HomeError.
Espero que isso ajude!