首页 > 解决方案 > 为什么 TS 私有构造函数 arg 不会产生“this”上下文属性?在示例中有效!是否依赖于 TS 版本?& VS Code 修复了什么?

问题描述

我在 Ionic 3 App 和 Page 的构造函数的上下文中执行此操作。

如果我有这样的代码:

import { Events } from 'ionic-angular';
const REFRESH = 'refresh';
export class JobsPage {
  constructor (private events:Events) {
    events.subscribe(REFRESH, ()=> {
      ...
    });
  }
  ionViewWillUnload():void {
    this.events.unsubscribe(REFRESH);
  }
}

VS Code 提供了一个带有修复程序的灯泡(这与上面的代码不同......我删减了解决方案,但this.events仍然显示了相同的问题,并且您可以访问上下文菜单)。

VS Code 添加索引签名

如果我选择为属性“事件”添加索引签名,它会export class JobsPage {constructor.

[x: string]: any;

警告消失。

  1. 这到底是怎么回事?

  2. 我知道我可以将事件的构造函数参数设为公开并获得可访问性this.events,(没有可访问性修饰符也否认这一点 - 与私有相同。我也可以声明一个类属性private events2:Events并在构造函数中说this.events2 = events),但我看过这样的视频 根据以下屏幕截图,它允许私有构造函数参数和对 this.events 的可访问性。

来自链接的 Youtube 视频的屏幕截图 @4:51

带有私有构造函数的 this.events

这是否以某种方式归结为 TypeScript 版本?

我在用:

我使用的 TypeScript 版本取自我的 VSCode IDE

打字稿版本

适用于 Mac 的 VS 代码版本

VS 代码版本

标签: typescriptparametersconstructorvisual-studio-codeionic3

解决方案


推荐阅读