2017-08-23 2 views
0

Ich habe viele falsche positive Ergebnisse in meinem Ionic 3-Projekt bekommen:Typescript/tslint: Eigenschaft 'x' wird deklariert, aber nie verwendet. False Positives

Ist das normal?

12:27:29] tslint: src/seiten/tabs/tabs.ts, zeile: 28 Eigenschaft 'navParams' wird deklariert aber nie benutzt.

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

[00.27.29] tslint: src/pages/tabs/tabs.ts, Linie: 30 Property 'authService' deklariert, aber nie verwendet.

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

Doch hier ist der Code:

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; 
    } 
} 

Antwort

1

Da Sie die Parameter mit einem eigenen Modifikator deklariert wird es ein Klassenfeld worden, und in der Tat, dass Klassenfeld wird nie verwendet. Entfernen Sie den Modifikator, wenn Sie nur den Parameter im Konstruktor verwenden.

+0

Also beschweren, weil ich nie dieses Präfix verwendet habe ... – JGFMK

+1

Die kurze Antwort wäre ja ... Wenn Sie dies verwenden, dann würde es als eine Eigenschaft zählen zählen und es würde verwendet werden. Aber wenn Sie es nur in Ihrem Konstruktor verwenden, wäre es besser, sie nicht Klasseneigenschaften zu nehmen. –

+0

ja entfernen Sie einfach den 'private' Modifikator oder verwenden Sie' this.navParams 'und es wird das Problem lösen und Sie können die Antwort akzeptieren. – Guillaume

1

Es ist wirklich ein Fehler in tslint, soweit ich das im Moment sagen kann. Ich sage das seit, weil ich in letzter Zeit ähnliche Beispiele hatte, bei denen das private Element des Konstruktors in anderen Methoden verwendet wurde. Also, das Feld wurde definitiv benutzt - nur nicht im Konstruktor.

Zumindest in meinem Fall konnte ich die tslint Warnung auflösen, indem ich diese injizierten Parameter als public markiert. Dadurch wird verhindert, dass der Linter feststellt, ob sie jemals referenziert werden. Es ist ein Hack, aber zumindest wird es die Warnmeldungen los, ohne dass Sie Ihren Code mit //tslint:disable-next-line Kommentare vor jedem solchen Konstruktor einwerfen müssen.

1

Wenn Sie die deklarierte Variable außerhalb der Typoskriptdatei verwenden, müssen Sie den Modifikator entfernen. Versuchen Sie, privat zu entfernen. Das wird dieses Problem beheben.

Verwandte Themen