Typescript在超级原型上声明一个可选方法

时间:2019-02-10 13:14:07

标签: typescript

我有以下代码:

class Test {
    value: any;

    getSomething() {
       // doSomething doesn't exist on type Test
        if (typeof this.doSomething === 'function') {
            return this.doSomething(this.value);
      }
  }
}

class A extends Test {
    doSomething(value) {
      console.log(value);
    }
}

const a = new A();

a.getSomething();

我希望doSomething方法是可选的。如果子类想要实现它,则可以,但是不必这样做。如何在超类中将其声明为undefined并防止ts错误?

1 个答案:

答案 0 :(得分:1)

您可以在Test类上将该方法声明为可选方法

class Test {
    value: any;
    doSomething?(p: any): any;
    getSomething() {
       // doSomething doesn't exist on type Test
        if (typeof this.doSomething === 'function') {
            return this.doSomething(this.value);
      }
  }
}

class A extends Test {
    doSomething(value) {
      console.log(value);
    }
}

const a = new A();
a.getSomething();

个人注释::您每天都在学习新知识,不知道是否有可能,但是我自己想,如果存在该语法会是什么,并且瞧瞧它能起作用。 >