为什么在类的构造函数中声明的属性不存在?

use*_*364 0 typescript angular

constructor (service: MyService) {}

ngOnInit() {
    this.service.init();
}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我得到:-

Property `service` does not exist on type 'MyComponment'
Run Code Online (Sandbox Code Playgroud)

然而,如果我宣布serviceprivate它的工作原理。这里发生了什么?

——

[Angular 8.2.12,TypeScript 3.5.3]

jit*_*der 5

文档

参数属性是通过在构造函数参数前面加上可访问性修饰符 orreadonly或两者来声明的。使用private 的参数属性声明并初始化一个私有成员; 同样,这同样适用于做publicprotectedreadonly

如果没有前缀,构造函数参数只不过是一个方法参数,您必须手动将其分配给构造函数本身的声明类属性。

相关SO帖子