标题说明了一切。
我正在为JavaScript中的自定义项目创建一个新的d.ts文件。在其他项目中,我使用了第三方定义文件。有混合物。有些人包括私人财产和课程方法,而有些则没有。
有正确的方法吗?我认为私人元素的意图是让他们保持这种方式。但从技术上讲,任何人都可以正确覆盖私有元素(在JS中)?我也担心忽略它们,我会留下一些漏洞。例如,如果一个类有一个未定义的私有update()
方法,那么我扩展该类,并编写一个update()
方法。我觉得这里有冲突。
我很感激任何建议。
答案 0 :(得分:1)
这取决于JavaScript实现,我会避免暴露不在原型上的私有成员。
假设我们有以下JavaScript:
var Example = (function () {
var update = function() {
alert('Private');
}
function Example() {
}
Example.prototype.doIt = function () {
update();
};
return Example;
})();
如果我这样声明:
declare class Example {
update(): void; // private
doIt(): void;
}
看起来我可以从子类调用super.update()
,但这会失败,因为超类上的update
函数不在范围内。
在这种情况下,我会将其从声明中删除,以确保我防止此类错误(在运行时会发生)。
declare class Example {
doIt(): void;
}
如果将update
函数添加到原型中,则应将其添加到定义中(感谢Ryan的理由)。