typescript/no-base-to-string 正确性
它的作用
此规则要求 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 使用时,要忽略的类型名称列表。 这些类型即使没有自定义实现,也被认为是安全的,可以调用 toString。
如何使用
通过配置文件或命令行启用此规则的方法如下:
json
{
"rules": {
"typescript/no-base-to-string": "error"
}
}bash
oxlint --type-aware --deny typescript/no-base-to-string