2017-02-10 3 views
1

Gegeben seien zwei Klassen, ClassA und `ClassBTyposkript super() vs new()

ClassA{ 
    public foo; 
    constructor(){ 
     this.foo = 'hey!'; 
    } 
} 

Was ist der Unterschied zwischen ist:

ClassB extends ClassA{ 
    constructor(){ 
     super(); 
    } 
} 

und

ClassB{ 
    private a; 
    constructor(){ 
     this.a = new ClassA(); 
    } 
} 

Der Grund, warum ich Ich frage das, weil ich das erste Szenario implementiert habe, aber wenn ich super.foo rufe, bekomme ich undefined, aber wenn ich this.a.foo aus dem zweiten Szenario aufrufen, bekomme ich den Wert.

Was ist der Unterschied zwischen dem Aufruf von super() und der Instanziierung einer neuen Instanz der Elternklasse? Ich bin mit Typoskript 2.1.5

Antwort

1

wenn ich

class A{ 
    public foo; 
    constructor(){ 
     this.foo = 'hey!'; 
    } 
} 

class B1 extends A{ 
    constructor(){ 
     super(); 
    } 
} 

class B2 { 
    public a; 
    constructor(){ 
     this.a = new A(); 
    } 
} 

console.log(new B1().foo) 
console.log(new B2().a.foo) 

versuche ich bekommen hey in beiden Fällen. Was ist anders das ist, dass ich

this.foo = 'hey!'; 

Sie tun dies nicht tun. aber Ihr Code sollte Ihnen einen Kompilierzeitfehler

geben