Exclude
Exclude
takes a union type, T
, and removes the members that are assignable to U
. It’s another example of the distributiveness of conditional types. For all union members that extend U
, the conditional expression will return never
. The result will be a union of the remaining members.
Exclude
is particularly useful when combined with the keyof
operator. If you’re not familiar with it, keyof
takes an interface and returns a union type of literal types representing names of properties of this interface.
As you can see in Example 3, Exclude
can be used to allow passing all object properties to a function except some specific property (or properties). In this example, safeSetProp
is a generic function with two type parameters, T
and K
. We require that K
extends Exclude<keyof T, 'id'>
as it must be a literal type representing one of the properties except for 'id'
.
Get hands-on with 1200+ tech skills courses.