Na interface IRestaurante ja declaramos o pratos com o tipo IPrato[], então porque não fizemos o mesmo no IPaginacao definindo o tipo de results como IRestaurante[]?
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!
Na interface IRestaurante ja declaramos o pratos com o tipo IPrato[], então porque não fizemos o mesmo no IPaginacao definindo o tipo de results como IRestaurante[]?
Olá, Wellington, como vai?
A diferença de definir o tipo diretamente em IPaginacao se deve à flexibilidade de uso que o TypeScript oferece com generics. Usando generics em IPaginacao, você deixa a interface mais dinâmica, ou seja, ela pode ser utilizada para paginar qualquer tipo de dado, e não apenas IRestaurante. Isso permite que você reutilize essa mesma interface em outros contextos onde o results pode ser um array de outro tipo, como IPrato, por exemplo.
Por exemplo, ao definir IPaginacao<T>, podemos passar IRestaurante como tipo específico de T para definir a paginação de restaurantes: IPaginacao<IRestaurante>. Se, mais tarde, precisar de uma paginação de pratos, pode usar IPaginacao<IPrato> sem criar uma nova interface de paginação. Isso aumenta a reutilização e mantém o código mais organizado.
Espero ter ajudado!
Siga firme nos seus estudos e conte com o fórum sempre que precisar!
Abraços :)