gpt4 book ai didi

TypeScript:公共(public)类扩展私有(private)类:不可能?

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

我正在做与这个问题非常相似的事情:

TypeScript: make class visible inside module only

除了我要扩展私有(private)类(class)。 VS2012 向我发出警告:导出类 MyExportedClass 扩展了私有(private)类 MyPrivateClass

我的代码是这样的:

module MyModule {
class MyPrivateClass {
constructor(public name: string) {
}
getName() {
return this.name;
}
}

export class MyExportedClass extends MyPrivateClass { // Error: exported class MyExportedClass extends private classMyPrivateClass
constructor(name: string) {
super(name);
}
}
}

我的理解是否正确,这是不可能的?

最佳答案

这是不可能的,因为它会允许模块外的任何人调用您的私有(private)类的成员。如果他们允许的话,你基本上会提高类(class)的知名度。

如果您查看它们生成的代码,您会发现私有(private)类在文件外部实际上是不可见的,因为它们没有使其成为 MyModule 的成员:

(function (MyModule) {
var MyPrivateClass = (function () {
function MyPrivateClass(name) {
this.name = name;
}
MyPrivateClass.prototype.getName = function () {
return this.name;
};
return MyPrivateClass;
})();
var MyExportedClass = (function (_super) {
__extends(MyExportedClass, _super);
function MyExportedClass(name) {
_super.call(this, name);
}
return MyExportedClass;
})(MyPrivateClass);
MyModule.MyExportedClass = MyExportedClass;
})(MyModule || (MyModule = {}));

这并不意味着生成的代码不起作用,但我的期望是该类对模块内的任何人都是可见的,并且考虑到一个模块可以跨越多个文件,这实际上是不可能的。

他们不允许这样做的主要原因很可能是因为升级代码可见性的概念问题,但我确实想指出还有一个微妙的技术问题。

关于TypeScript:公共(public)类扩展私有(private)类:不可能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13868057/

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