Skip to main content

๐Ÿงช Experimental

Use this preset when you want every stable rule from all plus lower-confidence candidate rules that are still being evaluated.

Config keyโ€‹

typefest.configs.experimental

Flat Config exampleโ€‹

import typefest from "eslint-plugin-typefest";

export default [typefest.configs.experimental];

This preset does require type information, because it layers experimental rules on top of all.

Use it when you want to trial report-only or still-maturing rules before they graduate into stable presets.

When to use this presetโ€‹

  • You want every stable rule from all.
  • You are comfortable reviewing noisier report-only diagnostics.
  • You want early visibility into candidate migrations such as objectMapValues.

Rollout adviceโ€‹

Treat this preset as a proving ground:

  1. Start with warn in one package or folder.
  2. Measure noise and collect false-positive feedback.
  3. Promote only the rules your team finds consistently useful.

Why some candidates were skippedโ€‹

Not every uncovered type-fest or ts-extras helper becomes an experimental rule immediately.

  • Some candidates have a clear canonical matcher and are good fits for report-only experimentation.
  • Others are intentionally skipped because their hand-written equivalents are too varied or too semantic to lint accurately yet.

Current intentionally skipped examples include SetParameterType, Jsonify, SimplifyDeep, Entry, Entries, isPropertyDefined, and isPropertyPresent.

Maintainer policy for that decision is documented in ADR 0016: Experimental rule admission and skip criteria.

Rules in this presetโ€‹

  • Fix legend:
    • ๐Ÿ”ง = autofixable
    • ๐Ÿ’ก = suggestions available
    • โ€” = report only

Experimental additions over allโ€‹

RuleFix
prefer-ts-extras-object-map-valuesโ€”
prefer-type-fest-asyncifyโ€”
prefer-type-fest-conditional-exceptโ€”
prefer-type-fest-conditional-keysโ€”
prefer-type-fest-distributed-omitโ€”
prefer-type-fest-distributed-pickโ€”
prefer-type-fest-mergeโ€”
prefer-type-fest-pick-index-signatureโ€”
prefer-type-fest-set-return-typeโ€”
prefer-type-fest-stringifiedโ€”
prefer-type-fest-union-to-intersectionโ€”

Baseline rules inherited from allโ€‹

RuleFix
prefer-ts-extras-array-at๐Ÿ”ง
prefer-ts-extras-array-concat๐Ÿ”ง
prefer-ts-extras-array-find๐Ÿ”ง
prefer-ts-extras-array-find-last๐Ÿ”ง
prefer-ts-extras-array-find-last-index๐Ÿ”ง
prefer-ts-extras-array-first๐Ÿ”ง ๐Ÿ’ก
prefer-ts-extras-array-includes๐Ÿ”ง ๐Ÿ’ก
prefer-ts-extras-array-join๐Ÿ”ง
prefer-ts-extras-array-last๐Ÿ”ง ๐Ÿ’ก
prefer-ts-extras-as-writable๐Ÿ”ง
prefer-ts-extras-assert-defined๐Ÿ”ง ๐Ÿ’ก
prefer-ts-extras-assert-error๐Ÿ’ก
prefer-ts-extras-assert-present๐Ÿ”ง ๐Ÿ’ก
prefer-ts-extras-is-defined๐Ÿ”ง
prefer-ts-extras-is-defined-filter๐Ÿ”ง
prefer-ts-extras-is-empty๐Ÿ”ง
prefer-ts-extras-is-equal-type๐Ÿ’ก
prefer-ts-extras-is-finite๐Ÿ”ง
prefer-ts-extras-is-infinite๐Ÿ”ง
prefer-ts-extras-is-integer๐Ÿ”ง
prefer-ts-extras-is-present๐Ÿ”ง
prefer-ts-extras-is-present-filter๐Ÿ”ง
prefer-ts-extras-is-safe-integer๐Ÿ”ง
prefer-ts-extras-key-in๐Ÿ”ง
prefer-ts-extras-not๐Ÿ”ง
prefer-ts-extras-object-entries๐Ÿ”ง
prefer-ts-extras-object-from-entries๐Ÿ”ง
prefer-ts-extras-object-has-in๐Ÿ”ง ๐Ÿ’ก
prefer-ts-extras-object-has-own๐Ÿ”ง ๐Ÿ’ก
prefer-ts-extras-object-keys๐Ÿ”ง
prefer-ts-extras-object-values๐Ÿ”ง
prefer-ts-extras-safe-cast-to๐Ÿ”ง
prefer-ts-extras-set-has๐Ÿ”ง ๐Ÿ’ก
prefer-ts-extras-string-split๐Ÿ”ง
prefer-type-fest-abstract-constructor๐Ÿ”ง
prefer-type-fest-and-all๐Ÿ”ง
prefer-type-fest-array-length๐Ÿ”ง
prefer-type-fest-arrayable๐Ÿ”ง
prefer-type-fest-async-return-type๐Ÿ”ง
prefer-type-fest-conditional-pick๐Ÿ”ง
prefer-type-fest-conditional-pick-deep๐Ÿ”ง
prefer-type-fest-constructor๐Ÿ”ง
prefer-type-fest-except๐Ÿ”ง
prefer-type-fest-if๐Ÿ”ง
prefer-type-fest-iterable-element๐Ÿ”ง
prefer-type-fest-json-array๐Ÿ”ง
prefer-type-fest-json-object๐Ÿ”ง
prefer-type-fest-json-primitive๐Ÿ”ง
prefer-type-fest-json-value๐Ÿ’ก
prefer-type-fest-keys-of-union๐Ÿ”ง
prefer-type-fest-less-than๐Ÿ”ง
prefer-type-fest-less-than-or-equal๐Ÿ”ง
prefer-type-fest-literal-union๐Ÿ”ง
prefer-type-fest-merge-exclusive๐Ÿ”ง
prefer-type-fest-non-empty-tuple๐Ÿ”ง
prefer-type-fest-omit-index-signature๐Ÿ”ง
prefer-type-fest-optional๐Ÿ”ง
prefer-type-fest-or-all๐Ÿ”ง
prefer-type-fest-partial-deep๐Ÿ”ง
prefer-type-fest-primitive๐Ÿ”ง
prefer-type-fest-promisable๐Ÿ”ง
prefer-type-fest-readonly-deep๐Ÿ”ง
prefer-type-fest-require-all-or-none๐Ÿ”ง
prefer-type-fest-require-at-least-one๐Ÿ”ง
prefer-type-fest-require-exactly-one๐Ÿ”ง
prefer-type-fest-require-one-or-none๐Ÿ”ง
prefer-type-fest-required-deep๐Ÿ”ง
prefer-type-fest-schema๐Ÿ”ง
prefer-type-fest-set-non-nullable๐Ÿ”ง
prefer-type-fest-set-optional๐Ÿ”ง
prefer-type-fest-set-readonly๐Ÿ”ง
prefer-type-fest-set-required๐Ÿ”ง
prefer-type-fest-simplify๐Ÿ”ง
prefer-type-fest-tagged-brands๐Ÿ”ง
prefer-type-fest-tuple-of๐Ÿ”ง
prefer-type-fest-union-member๐Ÿ”ง
prefer-type-fest-union-to-tuple๐Ÿ”ง
prefer-type-fest-unknown-array๐Ÿ”ง
prefer-type-fest-unknown-map๐Ÿ”ง
prefer-type-fest-unknown-record๐Ÿ”ง
prefer-type-fest-unknown-set๐Ÿ”ง
prefer-type-fest-unwrap-tagged๐Ÿ”ง
prefer-type-fest-value-of๐Ÿ”ง
prefer-type-fest-writable๐Ÿ”ง
prefer-type-fest-writable-deep๐Ÿ”ง