12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- import {Except} from './except';
- import {ConditionalKeys} from './conditional-keys';
-
- /**
- Exclude keys from a shape that matches the given `Condition`.
-
- This is useful when you want to create a new type with a specific set of keys from a shape. For example, you might want to exclude all the primitive properties from a class and form a new shape containing everything but the primitive properties.
-
- @example
- ```
- import {Primitive, ConditionalExcept} from 'type-fest';
-
- class Awesome {
- name: string;
- successes: number;
- failures: bigint;
-
- run() {}
- }
-
- type ExceptPrimitivesFromAwesome = ConditionalExcept<Awesome, Primitive>;
- //=> {run: () => void}
- ```
-
- @example
- ```
- import {ConditionalExcept} from 'type-fest';
-
- interface Example {
- a: string;
- b: string | number;
- c: () => void;
- d: {};
- }
-
- type NonStringKeysOnly = ConditionalExcept<Example, string>;
- //=> {b: string | number; c: () => void; d: {}}
- ```
- */
- export type ConditionalExcept<Base, Condition> = Except<
- Base,
- ConditionalKeys<Base, Condition>
- >;
|