gpt4 book ai didi

inheritance - 重写派生类中的静态字段时出现“...不正确地扩展基类静态端”错误

转载 作者:搜寻专家 更新时间:2023-10-30 20:43:42 25 4
gpt4 key购买 nike

重写派生类中的静态字段导致

error TS2417: Build:Class static side 'typeof TDerived' incorrectly extends base class static side 'typeof TBase'.

这是一个合法的错误案例吗?

class TBase
{
private static s_field = 'something';

public constructor() {}
}

class TDerived extends TBase
{
private static s_field = 'something else'; // commenting this line fixes error

public constructor()
{
super();
}
}

那我应该如何处理静态字段呢?目前唯一的解决方法是在每个静态字段名前加上类名,这是一个非常难看的解决方案。

private static TBase_s_field = 'something';
...
private static TDerived_s_field = 'something else';

ps 使用 typescript 2.0.3

最佳答案

您不能在派生类中重新声明 private 字段。如果您希望派生类能够重新声明或访问该字段,请使用 protected

这是强制执行的,因为静态方法在派生类中也可用。例如,这段代码做了一些意想不到的事情(如果我们忽略编译错误):

class Base {
private static foo = 'base';

static printName() {
// Should always print 'base' because no one
// else has access to change 'foo'
console.log(this.foo);
}
}

class Derived extends Base {
private static foo = 'derived';
}
// Will actually print 'derived'
Derived.printName();

关于inheritance - 重写派生类中的静态字段时出现“...不正确地扩展基类静态端”错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39799195/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com