Are you an LLM? You can read better optimized documentation at /docs/guide/usage/linter/rules/typescript/related-getter-setter-pairs.md for this page in Markdown format
typescript/related-getter-setter-pairs 严格
💭 This rule requires type information.
An auto-fix is available for this rule.
它做了什么
此规则强制要求同一属性的获取器(getter)和设置器(setter)必须一起定义,并且具有相关联的类型。
为什么这是不好的?
当你为同一属性定义获取器和设置器时,它们通常应被一起定义,并使用兼容的类型。如果类型不匹配,或分别定义,可能会导致混淆并引发潜在的运行时错误。
示例
此规则的 错误 代码示例:
ts
class Example {
// 获取器和设置器类型不兼容
get value(): string {
return this._value.toString();
}
set value(val: number) {
// 与获取器不兼容
this._value = val;
}
private _value: number = 0;
}
// 缺少对应的设置器或反之亦然的属性可能被标记
class IncompleteProperty {
get readOnlyValue(): string {
return "constant";
}
// 缺少设置器 —— 可能是故意的,但应保持一致
}此规则的 正确 代码示例:
ts
class Example {
// 获取器和设置器类型兼容
get value(): string {
return this._value;
}
set value(val: string) {
this._value = val;
}
private _value: string = "";
}
// 只有获取器的只读属性
class ReadOnlyProperty {
get constant(): string {
return "constant value";
}
}
// 只有设置器的只写属性(较少见但有效)
class WriteOnlyProperty {
set logger(message: string) {
console.log(message);
}
}如何使用
要通过配置文件或命令行 启用 此规则,可以使用:
json
{
"rules": {
"typescript/related-getter-setter-pairs": "error"
}
}bash
oxlint --type-aware --deny typescript/related-getter-setter-pairs