close

no-unnecessary-type-constraint

Configuration

PresetConfigured Value
✅ ts.configs.recommended"error"
rslint.config.ts
import { defineConfig, ts } from '@rslint/core';

export default defineConfig([
  ts.configs.recommended,
  {
    rules: {
      '@typescript-eslint/no-unnecessary-type-constraint': 'error',
    },
  },
]);

Rule Details

This rule disallows unnecessary constraints on generic types. Type parameters (<T>) default to unknown, so constraining a generic type parameter to any or unknown has no effect.

Examples of incorrect code for this rule:

interface FooAny<T extends any> {}

class BarAny<T extends any> {}

function BazAny<T extends any>() {}

const QuuxAny = <T extends any>() => {};

interface FooUnknown<T extends unknown> {}

class BarUnknown<T extends unknown> {}

function BazUnknown<T extends unknown>() {}

const QuuxUnknown = <T extends unknown>() => {};

Examples of correct code for this rule:

interface Foo<T> {}

class Bar<T> {}

function Baz<T>() {}

const Quux = <T>() => {};

Original Documentation