打字稿super()vs new()

时间:2017-02-10 16:17:44

标签: typescript

给定两个类ClassA和`ClassB

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

有什么区别:

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

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

我问这个的原因是因为我已经实现了第一个方案,但每当我拨打super.foo时,我都会undefined,但如果我从第二个方案调用this.a.foo,我得到了价值。

调用super()和实例化父类的新实例有什么区别? 我正在使用TypeScript 2.1.5

1 个答案:

答案 0 :(得分:1)

如果我尝试

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)

在这两种情况下我都嘿嘿。你有什么不同我

this.foo = 'hey!';

你没有这样做。但是你的代码应该给你一个编译时错误