glaucia86 / curso-typescript-zero-to-hero

Repositório responsável pelo Curso de TypeScript - Zero to Hero

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Pergunta da Comunidade [Jhean Brizadao]: Glaucia, valeu pela aula, mas fiquei com uma dúvida sobre Omit! Quando utiliza Omit com herança, o segundo parametro que é a propriedade tem funcionalidade de mudar o type ? mas se colocar sem herança tem a funcionalidade de excluir a propriedade e herda o resto ?

glaucia86 opened this issue · comments

pergunta inerente a Aula - 79

Oi, Jhean. Tudo bem? Desculpa pela demora na resposta!
No TypeScript, o tipo de utilitário Omit é usado para criar um novo tipo excluindo propriedades especificadas de um tipo existente. O segundo parâmetro de Omit representa as propriedades a serem omitidas.

Ao usar Omitir com herança, o segundo parâmetro permite excluir propriedades do tipo base e também alterar o tipo das propriedades no tipo derivado. Isso significa que você pode excluir propriedades e substituir seus tipos no tipo resultante.

Aqui está um exemplo para ilustrar isso:

interface Base {
  prop1: string;
  prop2: number;
}

interface Derived extends Omit<Base, 'prop2'> {
  prop1: number;
}

const obj: Derived = {
  prop1: 123,
};

Neste exemplo, Derived estende Base usando Omit e exclui a propriedade prop2 do tipo base. Além disso, a propriedade prop1 em Derived é substituída para ter um tipo number em vez de string.

No entanto, ao usar Omit sem herança, ele simplesmente exclui as propriedades especificadas do tipo e o tipo resultante inclui todas as outras propriedades. Nesse caso, não há funcionalidade para alterar o tipo das propriedades.

Aqui está um exemplo de uso de Omit sem herança:

interface Example {
  prop1: string;
  prop2: number;
  prop3: boolean;
}

type NewExample = Omit<Example, 'prop2'>;

const obj: NewExample = {
  prop1: 'Hello',
  prop3: true,
};

Neste caso, NewExample é criado omitindo a propriedade prop2 de Example. O tipo resultante NewExample terá prop1 e prop3, herdando seus tipos originais de Example.

Portanto, em resumo,

  • Ao usar Omit com herança, o segundo parâmetro permite excluir propriedades e alterar seus tipos.
  • Sem herança, Omit simplesmente exclui as propriedades especificadas enquanto mantém o restante do tipo intacto.

Deixo aqui uma referência de artigo complementar sobre o Omit: aqui