TS-番外篇: 鸭子类型

416 阅读1分钟

鸭子类型

定义: 鸭子类型(Duck Typing)是一种动态类型的实现方式,它的核心思想是“如果一个对象走起路来像鸭子,游起泳来像鸭子,叫起来也像鸭子,那么就可以认为这个对象是鸭子”。

对于一个对象来说,只要它具备了某种类型特定的属性和方法,我们就可以把它当做某种类型来使用。可以提高代码的可重用性和扩展性。

  class Person {
    constructor(public name: string, public age: number) {
      this.name = name
      this.age = age
    }
    swiming() {}
  }
  
  class Student {
    constructor(public name: string, public age: number) {
      this.name = name
      this.age = age
    }
    swiming() {}
  }
  
  // 这个函数的参数为Person类, 但是由于鸭子类型可以传入Student类
  function foo(para: Person) {
    //一系列操作...
  }
  foo(new Student("messi", 33))
  export {}