interface inmutável (Typescript)
A intenção é criar um interface que espelha exatamente tudo que envia a API. Logo para diferentes métodos que se exigem dentro de sua aplicação se criam tipos que utilizam a interface principal, modificam o seu conteúdo e se exporta para utilização. A interface principal nunca é alterada e se necesita menos linhas de código.
interface UserData = {
id: string
name: string
email: string
password: string
created_at: string
}
// Omit: Remove as propriedades do tipo
type ListUser = Omit<UserData, 'password'>
// Pick: Seleciona as propriedades do tipo
type CreateUser = Pick<UserData, 'name' | 'email' | 'password'>
// Partial: Deixa todas as propriedades seleccioandas como opcional
type UpdateUser = Partial<Pick<UserData, 'name' | 'email' >>
export type { ListUser, CreateUser, UpdateUser }