Javascript 为什么路由器是私有的?
在Angular 2+(4)中,它显示使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个访问级别,
路由器成为私有成员,例如:
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的作用,只是好奇它背后的原因。