Using Conditional Types with Type Unions
Conditional types podem ser usados com type unions permitindo tipos serem facilmente selecionados ou excluidos do set quea união contém, como mostrado abaixo:
Código
Quando a conditional type é provida com um type unioon o TSC distribui as condições para cada tipo da união, criando o que é conhecido como um tipo distributive conditional. Esse efeito é aplicado quando um conditional types é usado como um tipo, como este exemplo:
O TSC aplica o conditional type para cada tipo na união separadamente e então cria uma união de resultados, como esse:
A conditional type Filter<T, U> faz com que nunca quando o primeiro parametro é o mesmo do segundo, produzindo esse resultado:
E não é possivel ter um union ter um union com never, o compilador omite isso da união, com o resultado que equivalencia de tipos:
Os filtros do conditional type saem algum tipo que não pode ser atribuido para Person e retorna os tipos faltantes na união. O método FilterArray<T> faz o trabalho da filtragem de um array usando uma função predicato e retorna o tipo Filter<T, U>