typescript/no-base-to-string 정확성
작동 방식
이 규칙은 문자열로 변환될 때 유용한 정보를 제공하는 객체에만 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