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