Skip to content
← Back to rules

typescript/no-base-to-string 正しさ

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

何を行うか

このルールは、文字列化時に有用な情報を提供するオブジェクトに対してのみ toString() および toLocaleString() メソッドが呼び出されるように制限します。

なぜこれは問題か

JavaScript の toString() メソッドは、プレーンオブジェクトに対して '[object Object]' を返すため、有用な情報とは言えません。このルールは、あまり有用でない文字列を返すオブジェクトに対して toString()toLocaleString() が呼び出されないように防止します。

このルールに違反する 不適切な コードの例:

ts
// これらはすべて '[object Object]' に評価される
({}).toString();
({ foo: "bar" }).toString();
({ foo: "bar" }).toLocaleString();

// これは 'Symbol()' に評価される
Symbol("foo").toString();

このルールに適合する 適切な コードの例:

ts
const someString = "Hello world";
someString.toString();

const someNumber = 42;
someNumber.toString();

const someBoolean = true;
someBoolean.toString();

class CustomToString {
  toString() {
    return "CustomToString";
  }
}
new CustomToString().toString();

設定

このルールは以下のプロパティを持つ設定オブジェクトを受け入れます。

checkUnknown

type: boolean

default: false

型が unknown である値についてもチェックするかどうか。 true にすると、unknown 値に対して toString が呼び出された場合に警告が発行されます。 デフォルトは false です。

ignoredTypeNames

type: string[]

default: ["Error", "RegExp", "URL", "URLSearchParams"]

安全と見なされる型名のリスト。これらの型はカスタム実装がなくても toString に対して安全と見なされます。

使用方法

設定ファイルまたは CLI でこのルールを有効化するには、次のように使用できます:

json
{
  "rules": {
    "typescript/no-base-to-string": "error"
  }
}
bash
oxlint --type-aware --deny typescript/no-base-to-string

参照