TypeScript 如何继承接口

日常写代码时,咱们总免不了把零散的功能模块凑到一起——就像拼乐高积木,单个零件各有用处,搭成整体才能完成小房子、小汽车。TypeScript 里的接口也是一样,它就像一份“功能清单”,规定了类或者对象该有哪些属性和方法,而继承接口,就是把别人写好的功能清单直接拿过来用,省得自己再重新列一遍。

先搞懂:啥是接口?啥是继承?

举个生活化的例子,你开了一家咖啡店,需要顾客点单的规则:“点单时得说清楚要什么饮品,还要给名字”,这就是咱们的“顾客点单接口”——它只规定了“要饮品”和“给名字”这俩要求,不管是谁来执行,都得遵守这俩规矩。

TypeScript 如何继承接口

那继承呢?假设你又开了一家分店,分店的点单规则和总店差不多,只是多了“要不要加冰”的要求。这时候你不用重新写一套规则,只要“继承”总店的点单接口,再加上新要求就行——这就是 TypeScript 里接口继承的逻辑。

最常用的:单接口继承,就像接接力棒

单接口继承是最简单的用法,就像你从朋友手里接过一根接力棒,自己再跑一段。咱们用代码举个实际的小例子,不用管复杂的语法,看逻辑就好:

`typescript

// 这是总店的点单接口

interface Order {

drink: string;

name: string;

}

// 分店的接口继承了Order,还加了ice属性

interface ShopOrder extends Order {

ice: boolean;

}

`

你看,ShopOrder 这个新接口,不用再写 drink 和 name,它自动就有了这俩属性,还多了 ice——就像分店的点单规则,既有总店的基础要求,又加了自己的新规矩。如果有个店员填 ShopOrder 时只写了 drink,没写 name,TypeScript 会直接报错,提醒你“别忘了给名字”,这就是接口继承的好处:既复用了旧规则,又保证了新规则的严谨。

更灵活的:多接口继承,就像抱多个积木

有时候咱们需要从好几个接口里拿规则,就像同时抱两块不同形状的乐高,拼到一起。还是用咖啡店的例子,假设你还有个外带窗口,外带的规则是“要饮品、要名字,还要给外带费”。这时候咱们可以让新接口同时继承“点单接口”和“外带接口”:

`typescript

// 外带接口的规则

interface Takeaway {

fee: number;

}

// 外带点单接口,同时继承点单和外带两个规则

interface TakeawayOrder extends Order, Takeaway {}

`

现在 TakeawayOrder 就有了 drink、name、fee 三个属性——就像外带窗口的店员,既要会处理普通点单,又要会算外带费,得同时遵守两套规则。用的时候,只要定义一个变量符合 TakeawayOrder 就行,不用分别检查,省了好多重复代码。

注意小坑:别搞混“类实现接口”和“接口继承接口”

有人会把这俩弄混,其实很好区分:接口继承接口,是“我要借你的规则来用”——就像分店借总店的点单规则,只是写个新接口;而类实现接口,是“我必须遵守接口的规则”——就像店员必须按点单规则来,得真的写出 drink 和 name 属性。

比如你写一个点单的类,用 implements 来遵守接口规则,而不是用 extends,这俩的用法完全不同,别搞混就不容易出错。

其实接口继承的核心就是“复用规则”,就像咱们日常做事,能借的规矩就别自己重新定——既省时间,又能保证逻辑统一。不管是单继承还是多继承,核心都是把零散的功能要求组合起来,让代码更清晰好维护,这就是 TypeScript 接口继承最实用的地方。

上一篇 PHP 如何追加写入