Executando verificação de segurança...
3
Leh
1 min de leitura ·

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 }
Carregando publicação patrocinada...
2

Essa ideia é extremamente interessante, esses dias mesmo eu estive me conectando a uma API e tendo dificuldades para lidar com os envios e retornos no Typescript que forma efetiva. A sua sugestão de "filtrar" a tipagem para determinados "sub-types" é bem interessante para lidar com diversas opções além da conexão API, como a possibilidade de uma interface global que você poderia coletar as tipagens de forma unitaria com o "Pick" da sua ideia ou algo do tipo.

Mas na minha opinião uma forma de haver uma "ponte" de tipagem entre back-end e front-end seria algo ainda mais preciso e dinamico de se lidar do que o espelhamento da interface ambas as pontas. Claro, eu também não sei como seria possivel fazer uma conexão efetiva dos dois ambientes distintos para que os dois tivessem acesso a mesma tipagem e fizesse com que, por exemplo, quando o back alterasse as tipagens de retorno o front já indetificasse isso logo após um primeiro fetch ou algo do tipo.

Ah e sim, talvez já tenha uma forma de fazer essa "Ponte" de tipagem entre as pontas e eu não saiba, então se alguém souber de algo, eu adoraria saber mais! :)

2

Existe!! Porém é relativamente nova e nem todo mundo conhece(pelo menos aqui no BR na gringa já tem dado o que falar), é chamada de tRPC(typed/typescript Remote Procedure Call), ela torna possível com o typescript não só mostrar a tipagem entre as duas pontas, mas corrige dinamicamente e permite formas de validação(com bibliotecas como o ZOD) para se usar em API's que não são tipadas. Ainda não usei essa ferramenta(ainda nem construi uma API REST simples kkkkkk), mas com certeza tornarei minha escolha principal, pois parece mais intuitivo o uso do que GraphQL e tem o beneficio do typescript então acho que vale mais a pena investir e me especializar nela

0