7

有没有办法像覆盖一样从基类调用函数。

基类

export class BaseClass {
   constructor() {
   //do something asynchronous
   //than call initialized
   }
}

继承类

export class InheritanceClass extends BaseClass {
   initialized() {
   // get called from base class
   }
}
4

2 回答 2

9

你的意思是这样的:

class Base {
    constructor(){
        setTimeout(()=>{
            this.initialized();
        }, 1000);
    }

    initialized(){
        console.log("Base initialized");
    }
}

class Derived extends Base {
    initialized(){
        console.log("Derived initialized");
    }
}

var test:Derived = new Derived(); // console logs "Derived initialized" - as expected.

Playground中运行良好(忽略 上奇怪的红色下划线setTimeout(),我认为这是一个错误 - 它编译并运行良好。)

您确实需要存在 on 的方法Base,但您可以在其中覆盖它Derived(使用 or,在这种情况下,无需调用super.initialized())。

于 2013-06-21T10:45:11.797 回答
2

为此,您需要将其初始化为抽象类的抽象成员。打字稿目前不支持此功能,但已要求该功能,并且有一个工作项为它打开:

http://typescript.codeplex.com/workitem/395

于 2013-06-21T10:35:38.250 回答