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() 호출이 허용되도록 합니다.

왜 문제인가요?

자바스크립트의 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

기본값: false

unknown 타입의 값도 확인할지 여부. true로 설정 시, unknown 값에 대한 toString 호출이 경고 대상이 됩니다. 기본값은 false입니다.

ignoredTypeNames

type: string[]

기본값: ["Error", "RegExp", "URL", "URLSearchParams"]

안전한 toString 사용을 위해 체크에서 무시할 타입 이름 목록입니다. 이 타입들은 자체 구현 없이도 toString을 호출하는 것이 안전하다고 간주됩니다.

사용 방법

구성 파일 또는 명령줄 인터페이스에서 이 규칙을 활성화하려면 다음과 같이 사용할 수 있습니다:

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

참고 자료