Eu não entendi qual seria a diferença de fazer desses 2 seguintes modos:
const [colaboradores, setColaboradores] = useState([]: IColaborador)
const [colaboradores, setColaboradores] = useState<IColaborador>([])
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!
Eu não entendi qual seria a diferença de fazer desses 2 seguintes modos:
const [colaboradores, setColaboradores] = useState([]: IColaborador)
const [colaboradores, setColaboradores] = useState<IColaborador>([])
Entendo a confusão. Vamos analisar as duas declarações para entender a diferença:
const [colaboradores, setColaboradores] = useState([]: IColaborador)Nesta declaração, parece que você está tentando inicializar o estado com um array vazio do tipo IColaborador. No entanto, a sintaxe está um pouco incorreta. A maneira correta de fazer isso seria:
const [colaboradores, setColaboradores] = useState<IColaborador[]>([]);
Essa declaração está correta e significa que você está inicializando o estado colaboradores como um array vazio que conterá elementos do tipo IColaborador.
const [colaboradores, setColaboradores] = useState<IColaborador>([])Nesta declaração, você está tentando inicializar o estado colaboradores com um array vazio do tipo IColaborador. No entanto, o tipo IColaborador não é um array, é um tipo que representa um colaborador individual. Portanto, esta declaração não está correta para representar um array de colaboradores.
A maneira correta seria a que mencionei na explicação do primeiro exemplo:
const [colaboradores, setColaboradores] = useState<IColaborador[]>([]);
Em resumo, a diferença entre as duas declarações está na forma como você está tipando o estado. A primeira forma é a correta para representar um array de colaboradores, enquanto a segunda forma tenta tipar um array vazio como um único IColaborador, o que não é apropriado.