Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] DTO seria como a Interface?

Professora, a estrutura de interface utilizada no curso é parecida com a estrutura DTO que uso hj na aplicação real(no trabalho).Sei que o DTO é apenas uma classe e sei da diferença com a interface, mas a pergunta seria se nesse caso para definir os atributos que preciso retornar eu poderia usar a interface ou uma classe ? ou os 2? Existe alguma convenção?

2 respostas
solução!

Opa! Então, DTO (objeto de transferência de dados) e interfaces são coisas diferentes, mas às vezes a galera usa os dois juntos. Dá uma olhada:

  1. DTO (Data Transfer Object):

    • O que é: É um jeito de organizar dados que vão de um lugar para outro na sua aplicação, geralmente entre o frontend e o backend.
    • Como é feito: DTOs geralmente são feitos como classes simples com informações que você quer mandar.
  2. Interfaces:

    • O que são: São como regras que você cria para dizer que certas classes precisam ter certas coisas.
    • Como são usadas: Uma classe pode "assinar" essas regras implementando uma interface, garantindo que ela tenha o que é esperado.

Quanto à sua pergunta, geralmente, DTOs são feitos como classes simples. Mas, nada te impede de usar uma interface para definir a estrutura do DTO. Se quiser menos código, pode usar uma interface. Se precisar de lógica específica no DTO, aí uma classe pode ser melhor.

  • Usar uma Classe para DTO:
    • Bom se você precisa de mais lógica no DTO.
    • Mais código, mas pode ser útil.
export class MeuDTO {
  public propriedade1: string;
  public propriedade2: number;
}
  • Usar uma Interface para DTO:
    • Menos código, especialmente se não precisa de lógica extra.
    • Mas não pode ter lógica direto na interface.
export interface MeuDTO {
  propriedade1: string;
  propriedade2: number;
}

Você também pode combinar os dois, usando a interface como uma "regra" e a classe como a implementação real.

export interface IMeuDTO {
  propriedade1: string;
  propriedade2: number;
}

export class MeuDTO implements IMeuDTO {
  propriedade1: string;
  propriedade2: number;
}

a escolha entre classe e interface depende do que você precisa. Se quiser algo mais leve e só com a estrutura, vai de interface. Se precisar de mais coisas na sua classe, ela pode ser a melhor opção.

AMEI sua explicação! Bem didática! Muito obrigado!