TS2611:“foo”被定义为类“A”中的属性,但在“B”中作为访问器被重写

作者:编程家 分类: typescript 时间:2025-11-14

属性重写和访问器的使用示例

在 TypeScript 中,我们可以通过定义类的属性和访问器来控制对类的成员的访问。属性定义了类的状态,而访问器提供了对属性的读取和修改的方式。在某些情况下,我们可能需要在子类中重新定义父类的属性或访问器,以满足特定需求。

在本文中,我们将通过一个简单的示例来说明属性重写和访问器的使用。

定义父类

首先,我们定义一个名为 "A" 的父类,其中包含一个属性 "foo"。

typescript

class A {

foo: string;

constructor(foo: string) {

this.foo = foo;

}

}

重写属性和访问器

接下来,我们创建一个名为 "B" 的子类,它继承自父类 "A"。在子类中,我们重新定义了属性 "foo" 为一个访问器,并提供了自定义的读取和修改逻辑。

typescript

class B extends A {

private _foo: string;

get foo(): string {

return this._foo.toUpperCase();

}

set foo(value: string) {

this._foo = value.toLowerCase();

}

}

在上面的代码中,我们使用了一个私有变量 "_foo" 来保存属性的真实值。在访问器的读取方法中,我们将值转换为大写字母返回;在修改方法中,我们将值转换为小写字母并保存到私有变量中。

使用示例

现在,我们可以创建一个实例并使用属性 "foo" 来读取和修改值。

typescript

const b = new B("Hello");

console.log(b.foo); // 输出 "HELLO"

b.foo = "WORLD";

console.log(b.foo); // 输出 "world"

在上面的示例中,我们首先创建了一个 "B" 类的实例 "b",并将其属性 "foo" 初始化为 "Hello"。然后,我们通过访问器的读取方法将属性的值转换为大写字母并输出。接着,我们使用访问器的修改方法将属性的值转换为小写字母,并再次输出。

通过属性重写和访问器的使用,我们可以在子类中对父类的属性进行定制化的读取和修改操作。这使得我们能够更灵活地控制类的行为,并根据具体需求来定义属性的访问方式。

在本文中,我们通过一个简单的示例演示了属性重写和访问器的使用方法。希望这能帮助你理解和应用这些概念在你的 TypeScript 项目中。