我是TypeScript世界的新手,我已经看过这样的例子来处理注入的对象并将其设置为组件的属性(this.anything)
首先公开并手动设置this.nav
export class XPTO {
constructor(public nav: NavController) {
this.nav = nav;
}
}
这个,私有
export class XPTO {
constructor(private nav: NavController) {
//this.nav is nav?
}
}
在构造对象之后的两种情况中,this.nav是一个NavController对象。 两种实现有何不同?或者在编译为普通javascript时这是一样的吗?
答案 0 :(得分:10)
实际上,在您的第一个示例中,根本不需要显式赋值:
export class XPTO {
constructor(public nav: NavController) {
// This line is not required.
// this.nav = nav;
this.someFunction();
}
someFunction(){
console.log(this.nav); // Prints out the NavController.
}
}
无论何时在构造函数参数上指定public或private,都会在类上创建相应的公共/私有变量,并使用参数的值填充。
实际上,两个代码示例的唯一区别是一个是私有的,另一个是公共的。
生成的JavaScript将是相同的。但是,如果您尝试访问代码中的私有变量,编译器将抛出错误。
答案 1 :(得分:3)
public
和private
,作为许多Typescript功能,只是TypeScript修饰符。我不确定编译器是否将这些变量命名为完全相同,但从JavaScript的角度来看,代码基本相同。
Typescript的兴趣在于为您提供类型检查等功能,它不一定总是修改输出的代码。