封装在类中的私有函数?Angular的服务和工厂



我有一个扫雷游戏,我写在JS,现在正试图转换为typescript。在这款游戏中,我执行了一个"GameFactory",它包含许多私有功能,只输出需要公开的内容。关于typescript的方法,我似乎误解了一些非常基本的东西。

从本质上讲,根据我的收集,typescript不支持类内部的真正的私有变量,除非它们在构造函数或模块中。通过real private,我指的是对象上不可用的变量,而不是private关键字。

在TypeScript中实现封装的正确方法是什么?把它和AngularJS的工厂/服务结合起来的最佳实践是什么?当然,我可以把我所有的代码都放在构造函数中,从而实现常规的JS函数作用域的封装,但在我看来这是错误的,因为它并没有真正使用TypeScript的功能。就像我说的,关于这些问题,我正在努力真正理解TypeScript范式,如果有人能给我指出正确的方向,那就太好了,因为我搜索了,无法找到一个很好的解释这些问题

在TypeScript中实现封装的正确方法是什么?把它和AngularJS的工厂/服务结合起来的最佳实践是什么?

如果你想让继承在JavaScript中可靠地工作,

private是不可能实现的。

然而,你可以直接使用揭示模块模式(放弃继承/原型),例如:
function foo(){
    let private = 123;
    return {
        getPrivate() { return private; },
        setPrivate(val: number) { private = val; }
    }
}

最新更新