财产' x'声明但从未使用过。误报

时间:2017-08-23 11:37:13

标签: typescript tslint

我的Ionic 3项目似乎得到了很多误报:

这是正常的吗?

12:27:29] tslint:src / pages / tabs / tabs.ts,line:28             物业' navParams'宣布但从未使用过。

  L27:  constructor(
  L28:    private navParams: NavParams,
  L29:    @Inject(forwardRef(() => AuthService ))

[12:27:29] tslint:src / pages / tabs / tabs.ts,line:30             物业' authService'宣布但从未使用过。

  L29:    @Inject(forwardRef(() => AuthService ))
  L30:    private authService:AuthService
  L31:  ) {

然而,这是代码:

export class TabsPage {
  ...
  mySelectedIndex: number;
  loggedIn:boolean;
  constructor(
    private navParams: NavParams,
    @Inject(forwardRef(() => AuthService ))
    private authService:AuthService
  ) {
    console.log('TabsPage constructor: navParams.data: ', navParams.data);
    this.loggedIn = authService.authenticated(RootPage.LAUNCHPAD.toString());
    this.mySelectedIndex = navParams.data.tabIndex || 0;
    console.log('Tabs pages: selectedIndex: ' + this.mySelectedIndex);
    console.log('Tabs pages: loggedIn: ' + this.loggedIn);
  }

  isLoggedIn():boolean {
    return this.loggedIn;
  }
}

3 个答案:

答案 0 :(得分:8)

如果在typescript文件之外使用声明的变量,则需要删除修饰符。尝试删除私人。这将解决这个问题。

答案 1 :(得分:5)

由于您使用私有修饰符声明参数,因此它将成为一个类字段,实际上该类字段从未使用过。如果只使用构造函数中的参数,请删除修饰符。

答案 2 :(得分:2)

就目前我所知,这是tslint中的一个错误。我这样说是因为我最近有类似的例子,其中注入构造函数的私有成员用于其他方法。因此,该字段肯定被使用 - 只是不在构造函数中。

至少在我的情况下,我能够通过将注入的参数标记为tslint来解决public警告。这样做可以防止linter确定它们是否曾被引用过。这是一个黑客,但至少它摆脱了警告消息,而不必在每个这样的构造函数之前用//tslint:disable-next-line注释乱丢你的代码。