μ μ λ©€λ²μ μ‘μΈμ€νλ λ° μ μ©νλ€κ³ μκ°ν©λλ€.
μ μλ:
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'
this.type
λ _static_ μμ±μ΄ μλλΌ type
λΌλ _instance_ μμ±μ μ‘μΈμ€νλ λ° μ¬μ©λλ―λ‘ μ μνμ λ°©μμΌλ‘ ν μ μμ΅λλ€.
κ·Έλ¬λ λ€μκ³Ό κ°μ΄ μμ±νλ©΄ μμ κ° μλν©λλ€.
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'
κΈ°λ³Έμ μΌλ‘ μΈμ€ν΄μ€μ constructor
μμ±μ Function
μ νμ΄μ§λ§ μλμΌλ‘ μ μΈνμ¬ ν΄λμ€μμ νΉμνν μ μμ΅λλ€. κ·Έλ κ² νλ©΄ this.constructor.xxx
ν΅ν΄ staticsμ μ‘μΈμ€ν μ μμΌλ©° μ€μ λ‘ μΈμ€ν΄μ€λ₯Ό μμ±ν μμ±μ κ°μ²΄(μ¦, νμλ μμ±μ κ°μ²΄)μ μμ±μ μ»μ μ μμ΅λλ€.
κ°μ₯ μ μ©ν λκΈ
this.type
λ _static_ μμ±μ΄ μλλΌtype
λΌλ _instance_ μμ±μ μ‘μΈμ€νλ λ° μ¬μ©λλ―λ‘ μ μνμ λ°©μμΌλ‘ ν μ μμ΅λλ€.κ·Έλ¬λ λ€μκ³Ό κ°μ΄ μμ±νλ©΄ μμ κ° μλν©λλ€.
κΈ°λ³Έμ μΌλ‘ μΈμ€ν΄μ€μ
constructor
μμ±μFunction
μ νμ΄μ§λ§ μλμΌλ‘ μ μΈνμ¬ ν΄λμ€μμ νΉμνν μ μμ΅λλ€. κ·Έλ κ² νλ©΄this.constructor.xxx
ν΅ν΄ staticsμ μ‘μΈμ€ν μ μμΌλ©° μ€μ λ‘ μΈμ€ν΄μ€λ₯Ό μμ±ν μμ±μ κ°μ²΄(μ¦, νμλ μμ±μ κ°μ²΄)μ μμ±μ μ»μ μ μμ΅λλ€.