Skip to content
← Back to rules

typescript/no-redundant-type-constituents 正しさ

This rule is turned on by default when type-aware linting is enabled.
💭 This rule requires type information.

何を行うか

このルールは、ユニオンとインターセクションの型構成要素の冗長なものを禁止します。

なぜ問題なのか

ユニオン型およびインターセクション型の一部の構成要素は、TypeScript の型システムのルールにより冗長になることがあります。このような冗長な構成要素は価値を追加せず、型の読みやすさや理解を難しくする可能性があります。

このルールに対して 誤り なコードの例:

ts
// ユニオン内では `unknown` は冗長
type T1 = string | unknown;

// ユニオン内では `any` は冗長
type T2 = string | any;

// ユニオン内では `never` は冗長
type T3 = string | never;

// より広い型より広いリテラル型
type T4 = string | "hello";

// サブセットとなるオブジェクト型
type T5 = { a: string } | { a: string; b: number };

このルールに対して 正しい コードの例:

ts
type T1 = string | number;

type T2 = "hello" | "world";

type T3 = { a: string } | { b: number };

// インターセクション内の `unknown` は意味を持つ
type T4 = string & unknown;

// インターセクション内の `never` は意味を持つ
type T5 = string & never;

使用方法

設定ファイルまたは CLI でこのルールを 有効化 するには、以下のいずれかを使用できます:

json
{
  "rules": {
    "typescript/no-redundant-type-constituents": "error"
  }
}
bash
oxlint --type-aware --deny typescript/no-redundant-type-constituents

参照