请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于Duck Typing和interface的疑问

老师您看我这样理解对吗?
在 TypeScript 中,所谓Duck Typing,就是指:无论一个对象是通过new关键字new出来的,还是通过字面量直接定义的,只要这个对象的结构符合某个接口的要求,就被TypeScript认为是同一种类型

interface Bird {
  fly(): void;
  sing(): void;
}

class Sparrow implements Bird {
  fly(): void {
    console.log("Sparrow flying");
  }
  sing(): void {
    console.log("Sparrow singing");
  }
}

const sparrow = new Sparrow();

const duck = {
  fly(): void {
    console.log("Duck flying");
  },
  sing(): void {
    console.log("Duck singing");
  },
};

function makeBirdFly(bird: Bird) {
  bird.fly();
}

makeBirdFly(sparrow);
makeBirdFly(duck);

上述的sparrow对象和duck对象分别是通过new和字面量创建的,但是因为都符合接口Bird的要求,所以被TypeScript认为是同一种类型,所以都可以被当作参数传入makeBirdFly函数(makeBirdFly的参数类型要求是Bird)

正在回答

1回答

同学你好

你的理解是正确的,这个谚语有点像我们那个白猫黑猫 抓住老鼠就是好猫 是一个意思的。

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号