prefer-type-fest-conditional-pick-deep
Require TypeFest ConditionalPickDeep<T, Condition, Options?> instead of legacy deep conditional-pick aliases.
Targeted pattern scopeโ
This rule targets imported aliases that mirror deep conditional property filtering semantics (for example, PickDeepByTypes and PickDeepByType).
What this rule reportsโ
- Type references that resolve to imported deep conditional-pick aliases.
Why this rule existsโ
ConditionalPickDeep is the canonical TypeFest helper for recursively filtering object properties by value condition. Standardizing on this utility improves consistency and readability.
โ Incorrectโ
import type { PickDeepByTypes } from "type-aliases";
type StringProps = PickDeepByTypes<User, string>;
โ Correctโ
import type { ConditionalPickDeep } from "type-fest";
type StringProps = ConditionalPickDeep<User, string>;
Behavior and migration notesโ
ConditionalPickDeep<T, Condition, Options?>recursively selects keys whose values matchCondition.- This rule only targets known alias names that represent the same intent.
- Keep custom aliases only when they intentionally add behavior beyond deep conditional filtering.
Additional examplesโ
โ Incorrect โ Additional exampleโ
import type { PickDeepByType } from "type-aliases";
type NumericProps = PickDeepByType<User, number>;
โ Correct โ Additional exampleโ
import type { ConditionalPickDeep } from "type-fest";
type NumericProps = ConditionalPickDeep<User, number>;
โ Correct โ Repository-wide usageโ
type DateProps = ConditionalPickDeep<User, Date>;
ESLint flat config exampleโ
import typefest from "eslint-plugin-typefest";
export default [
{
plugins: { typefest },
rules: {
"typefest/prefer-type-fest-conditional-pick-deep": "error",
},
},
];
When not to use itโ
Disable this rule if external API contracts require specific alias names.
Package documentationโ
TypeFest package documentation:
Source file: source/conditional-pick-deep.d.ts
/**
Pick keys recursively from the shape that matches the given condition.
@category Object
*/
export type ConditionalPickDeep<
Type,
Condition,
Options extends ConditionalPickDeepOptions = {},
> = ...
Rule catalog ID: R082