Solución comentada
Publicado el 29 de julio de 2026La solución
type MyExclude<T, U> = T extends U ? never : TEl error más común
type MyExclude<T, U> = [T] extends [U] ? never : TEnvolver T en una tupla desactiva la distribución, así que se compara la unión entera de golpe. ["a" | "b" | "c"] extends ["a"] es falso, y la unión vuelve entera sin filtrar.
Línea por línea
T extends UTestá aquí *desnudo* — aparece solo en el lado comprobado, sin envolver en tupla, array u objeto. Esa es exactamente la condición que dispara la distribución sobre una unión.? never : TCada miembro se convierte en
nevero sobrevive tal cual. Al unir los resultados losneverdesaparecen solos, porqueneveres el elemento neutro de la unión.
Para recordar
La distribución es la diferencia entre preguntar sobre una unión y preguntar sobre cada miembro. [T] extends [U] es el interruptor que la apaga.

