| import {ConditionalKeys} from './conditional-keys'; |
| |
| /** |
| Pick keys from the shape that matches the given `Condition`. |
| |
| This is useful when you want to create a new type from a specific subset of an existing type. For example, you might want to pick all the primitive properties from a class and form a new automatically derived type. |
| |
| @example |
| ``` |
| import {Primitive, ConditionalPick} from 'type-fest'; |
| |
| class Awesome { |
| name: string; |
| successes: number; |
| failures: bigint; |
| |
| run() {} |
| } |
| |
| type PickPrimitivesFromAwesome = ConditionalPick<Awesome, Primitive>; |
| //=> {name: string; successes: number; failures: bigint} |
| ``` |
| |
| @example |
| ``` |
| import {ConditionalPick} from 'type-fest'; |
| |
| interface Example { |
| a: string; |
| b: string | number; |
| c: () => void; |
| d: {}; |
| } |
| |
| type StringKeysOnly = ConditionalPick<Example, string>; |
| //=> {a: string} |
| ``` |
| */ |
| export type ConditionalPick<Base, Condition> = Pick< |
| Base, |
| ConditionalKeys<Base, Condition> |
| >; |