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 Pedantic
💭 This rule requires type information.
功能说明
此规则要求同一属性的 getter 和 setter 必须一起定义,并且类型相关联。
为什么这不好?
当你为同一属性定义 getter 和 setter 时,它们通常应当一起定义,并且使用兼容的类型。类型不匹配,或者将它们分别定义,可能会导致混淆以及潜在的运行时错误。
示例
此规则的错误代码示例如下:
ts
class Example {
// Getter 和 setter 的类型不兼容
get value(): string {
return this._value.toString();
}
set value(val: number) {
// 与 getter 不兼容
this._value = val;
}
private _value: number = 0;
}
// Getter 没有对应的 setter,或者反之,可能会被标记
class IncompleteProperty {
get readOnlyValue(): string {
return "constant";
}
// 缺少 setter——这可能是有意为之,但应保持一致
}此规则的正确代码示例如下:
ts
class Example {
// Getter 和 setter 的类型兼容
get value(): string {
return this._value;
}
set value(val: string) {
this._value = val;
}
private _value: string = "";
}
// 只有 getter 的只读属性
class ReadOnlyProperty {
get constant(): string {
return "constant value";
}
}
// 只有 setter 的只写属性(较少见,但有效)
class WriteOnlyProperty {
set logger(message: string) {
console.log(message);
}
}如何使用
To enable this rule using the config file or in the CLI, you can use:
json
{
"options": {
"typeAware": true
},
"rules": {
"typescript/related-getter-setter-pairs": "error"
}
}ts
import { defineConfig } from "oxlint";
export default defineConfig({
options: { typeAware: true },
rules: {
"typescript/related-getter-setter-pairs": "error",
},
});bash
oxlint --type-aware --deny typescript/related-getter-setter-pairs版本
此规则新增于 v1.12.0。
