gpt4 book ai didi

typescript - 更改子类的可见性

转载 作者:搜寻专家 更新时间:2023-10-30 21:49:15 24 4
gpt4 key购买 nike

似乎可以将子类中的属性可见性从 protected 更改为 public:

class BaseFoo  {
protected foo;
}

class Foo extends BaseFoo {
foo = 1;
}

new Foo().foo;

但不是任何其他可能的组合。我认为通过省略可见性修饰符意外更改 public 比从 protected 更改为 private (这是不允许的)更有害。

对此有何解释?这是一个已知问题吗?

最佳答案

看起来这个问题已经被讨论过了,然后在 repo here 中以“按预期工作”结束了. OOP 理论有点超出我的专业知识范围,但我对维护者逻辑的理解是,protected 是应该在基类上私有(private)的方法类别,但允许在子类上公开。然后

class Foo extends BaseFoo {
protected foo = 1;
}

是保持 fooFoo 上“私有(private)”的方法。至于隐式属性类型的问题(foo = 1 应该默认为 public 吗?),这作为预期行为似乎是有意义的。默认为 public 是整个 TS 的标准,如果你想让它成为不可能,你可以使用:

class BaseFoo  {
private foo;
}

class Foo extends BaseFoo {
foo = 1; // compiler error
}

关于typescript - 更改子类的可见性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48643880/

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