代码之家  ›  专栏  ›  技术社区  ›  danday74

如何用默认方法行为处理问题?

  •  -1
  • danday74  · 技术社区  · 6 年前

    为了说明我的问题,我将代码简化如下:

    class Animal {}
    
    class Cat extends Animal {
      talk() {
        console.log('meow')
      }
    }
    
    class Tiger extends Animal {
      talk() {
        console.log('roar')
      }
    }
    

    所以这个代码是这样工作的:

    const cat = new Cat()
    cat.talk() // outputs meow
    const tiger = new Tiger()
    tiger.talk() // outputs roar
    

    但如果我这样做,我显然会遇到一个问题,因为方法不存在:

    const animal = new Animal()
    animal.talk() // error
    

    有什么办法吗?谢谢

    1 回复  |  直到 6 年前
        1
  •  1
  •   Frank Fajardo    6 年前

    我希望所有的动物都有一个谈话方法,但我不想在动物类中定义一个

    在Typescript 1.6或更高版本上,可以定义 Animal 类作为抽象类,如下所示:

    abstract class Animal {
        abstract talk(): void;
    }
    

    如果你不想定义 动物

    class Animal {
        abstract talk(): void;
    }