Javascript 为什么路由器是私有的?

Javascript 为什么路由器是私有的?,javascript,angular,typescript,angular-router,Javascript,Angular,Typescript,Angular Router,在Angular 2+(4)中,它显示使路由器成为私有成员,例如: constructor( private router: Router, // <- router is private private heroService: HeroService) { } ... ) {} 构造函数( 专用路由器:路由器,//封装。将字段设为专用并将功能设为公共。在本例中使用类的客户端只需要知道它可以做什么,而不需要知道它是如何做的 TypeScript中有3个访问级别,

在Angular 2+(4)中,它显示使
路由器成为私有成员,例如:

constructor(
    private router: Router, // <- router is private
    private heroService: HeroService) { }
    ...
) {}
构造函数(

专用路由器:路由器,//封装。将字段设为专用并将功能设为公共。在本例中使用
类的客户端只需要知道它可以做什么,而不需要知道它是如何做的

TypeScript中有3个访问级别,
公共、私有、受保护
。这些关键字仅在TypeScript级别受支持

如果将
变量/函数
设置为私有,则它将在类外不可见

如果您将
变量/函数
公开,它将在课堂外可见


如果将
变量/函数
设置为受保护,则它将仅在类本身和继承该类的任何类中可见。

添加
私有
公共
受保护
会隐式添加一个类级字段,在该字段中指定传递的构造函数参数对

这是一个用于减少样板文件的TypeScript功能

现在,您可以使用

someMethod() {
  this.router...
}
而不是

class MyComponent {
  router:Router;

  constructor(
    router: Router, // <- router is private
    private heroService: HeroService) { }
    ...
  ) {
    this.router = router;
  }

  someMethod() {
    this.router...
  }
}
类MyComponent{
路由器:路由器;
建造师(

router:router,//在这个特定的例子中,这对路由器来说并不是特别的……在OOP中,通常的问题是“这个类的公共接口是否应该由外部代码访问?”您是否曾期望
路由器
在此处公开并从其他任何地方访问,如
ctrl.router
?如果没有,则只需谨慎地将其保持为
私有
。将公开的公共接口限制在真正必要的部分,就可以更容易地找出什么在使用什么,并在以后根据需要对其进行重构没有外部代码绑定到它。

谢谢各位,我理解标记为private的作用,只是好奇它背后的原因。