Saya pikir itu berguna untuk mengakses anggota statis:
Di bawah contoh:
class A {
protected static type: string;
public log(): string {
console.log(this.type);
}
}
class B extends A {
protected static type: string = 'C';
}
class C extends A {
protected static type: string = 'C';
}
b = new B();
b.log(); // => 'B'
c = new C();
c.log(); // => 'C'
Kami tidak dapat melakukannya seperti yang Anda sarankan karena this.type
digunakan untuk mengakses properti _instance_ bernama type
, bukan properti _static_.
Namun, contoh Anda berfungsi jika Anda menulisnya sebagai berikut:
class A {
"constructor": typeof A; // Explicitly declare constructor property
protected static type: string;
public log() {
console.log(this.constructor.type); // Access actual constructor object
}
}
class B extends A {
protected static type: string = 'B';
}
class C extends A {
protected static type: string = 'C';
}
let b = new B();
b.log(); // => 'B'
let c = new C();
c.log(); // => 'C'
Secara default properti constructor
dari sebuah instance bertipe Function
, tetapi Anda dapat mengkhususkannya dalam kelas dengan mendeklarasikannya secara manual. Setelah Anda melakukannya, Anda dapat mengakses statika melalui this.constructor.xxx
, dan Anda akan mendapatkan properti dari objek konstruktor yang benar-benar membuat instance (yaitu objek konstruktor turunan).
Komentar yang paling membantu
Kami tidak dapat melakukannya seperti yang Anda sarankan karena
this.type
digunakan untuk mengakses properti _instance_ bernamatype
, bukan properti _static_.Namun, contoh Anda berfungsi jika Anda menulisnya sebagai berikut:
Secara default properti
constructor
dari sebuah instance bertipeFunction
, tetapi Anda dapat mengkhususkannya dalam kelas dengan mendeklarasikannya secara manual. Setelah Anda melakukannya, Anda dapat mengakses statika melaluithis.constructor.xxx
, dan Anda akan mendapatkan properti dari objek konstruktor yang benar-benar membuat instance (yaitu objek konstruktor turunan).