2017-09-11 3 views
1

Ich habe eine private Eigenschaft im Konstruktor deklariert und auch im Konstruktor verwendet, um einen Wert abzurufen. Ich bekomme TS6138: PROPERTY 'xxxx' wird deklariert aber nie benutzt.Typescript private Eigenschaft deklariert, aber nicht verwendet

constructor(private xxxx: Ixxxx) { 
    this.abc = xxxx.get(); 
} 

Ich aktualisiere auf Typoskript 2.4.2. Wenn ich privat entferne, verschwindet der Fehler. Offensichtlich wird die Immobilie öffentlich, was ich nicht will.

+2

Ändern es auf 'this.abc = this.xxxx.get();', obwohl, wenn Sie in der Tat nicht in dem Rest der Klasse verwenden und es ist privat, warum brauchst du es als Mitglied? –

+0

Sie haben Recht, es kann nur ein Konstruktor Prameter sein. – tangokhi

Antwort

1

Die Warnung ist korrekt, Sie verweisen auf das Konstruktorargument, nicht auf die Eigenschaft. Wenn Sie die Eigenschaft zugreifen möchten, müssten Sie:

constructor(private xxxx: Ixxxx) { // xxxx is constructor arg and private property 
    this.abc = this.xxxx.get(); 
} 

Wenn Sie planen, nicht die Eigenschaft anderswo in Ihrer Klasse auf verwenden, könnten Sie auch die private Modifikator entfernen und den Konstruktor Argument statt:

constructor(xxxx: Ixxxx) { // xxxx is constructor arg 
    this.abc = xxxx.get(); 
} 

Dadurch wird nicht dazu führen, xxxx eine public Eigenschaft werden. Nur Hinzufügen des public Schlüsselwort wird das tun:

constructor(public xxxx: Ixxxx) { // xxxx is constructor arg and public property 
    this.abc = this.xxxx.get(); 
} 
Verwandte Themen