鸭子理论

跟 go 的概念一致,都是讨论接口的实现

interface RWeader {
  read:()=>void;
  write:()=>void;
}

function Do(r:RWeader){
  r.read()
  r.write()
}

const Duck = {
  read: () => console.log("Duck read"),
  write: () => console.log("Duck write"),
  t: () => console.log("Duck t")
}

Do(Duck)

跟 go 概念基本一致

与 js 的操作

比如我们需要调用一个 js 的对象 const jsArray = [1,2,3]

那么 jsArray 拥有一个 forEach 方法对吧,我们只需要生命一个接口,它拥有这个方法即可

interface a {
  forEach:(callback:(item:any)=> void)=>void;
}
function d(a1:a){
  a1.forEach((item:any)=>{console.log(item)})
}
// js
const jsArray = [1,2,3]
d(jsArray)