OmitByType
Challenge
From T, pick a set of properties whose type are not assignable to U.
For Example
type OmitBoolean = OmitByType<
{
name: string;
count: number;
isReadonly: boolean;
isEnable: boolean;
},
boolean
>; // { name: string; count: number }
Solution
Auch zur Lösung dieses Problems erstellen wir wieder einen Mapped-Type, und prüfen bei Iterieren über die Attribute des Objektes, ob es sich bei dem Wert zu der Eigenschaft um den Typ U handelt. Falls ja, wird die Eigenschaft verworfen, sonst wird es erglänzt.
type OmitByType<T, U> = {
[key in keyof T as T[key] extends U ? never : key]: T[key];
};