【TS】接口和接口继承
接口
接口也相当于语法规范,在使用ts编写的时候,需要注重的就是数据类型以及语法规范,恰好这里提供了一个接口,在进行传值的时候,传值的类型以及字段必须符合我们预期的类型规范才可以,下面是代码演示
语法:interface  接口名 { 参数名 :  数据类型  }  ,例如:  interface IPerson { username :  string }
    // 接口:是一种能力,一种约束而已
    // 定义一个接口 此处定义规范
    interface IPerson{
        firstName : string // 姓氏
        lastName : string // 名字
    }
    // 输出姓名   在调用此方法的时候,需要传值,传的值必须符合IPerson内定义的规范
    function showName (person : IPerson) {
        return `${person.firstName},${person.lastName}`
    }
    const person = {
        firstName : '孙',
        lastName : '悟空'
    }
   // 此处调用showName 的时候 传入person 符合上面定义的接口规范
   console.log(showName(person));    // 打印 孙,悟空
如果传值少一项,或者传入的类型错误,则会编译报错,ts会给予提示,例如
const person = {
        firstName : '孙',
       // lastName : '悟空'
    }
  console.log(showName(person));
  // 此处传入的person 内部少一个字段,编译报错

接口继承
接口可以继承,子接口继承父接口,子接口就拥有父接口定义的数据类型约束,例如在此处定义了两个接口
// 接口1
interface ICart {
    name : string
}
// 接口2
interface IColor {
    color : string
}
这两个接口已经写好了,有时候需要对不同的数据进行约束,单一的接口可能不太合适,或者不太够用,那么就可以将多个接口组合,这就是继承。比如,这里定义了A接口 name ,B接口color,现在有一条数据:名字是东风,颜色为红色,价格999,此时可以将多个接口组合起来,B接口继承A接口,让B接口拥有A接口的数据类型约束,或者是定义一个新接口继承AB两个接口。
// 定义一个接口,继承 ICart 和 IColor
interface ICartInfo extends ICart,IColor{
    price : number    // 自身也可以定义数据类型
 }
此时 ICartInfo 的接口实际上约束的数据类型为:
interface ICartInfo extends ICart,IColor{
    name : string
    color : string
    price : number
 }
使用接口
const cartInfo : ICartInfo = {
    name : '东风',
    color : "红色",
    price : 999
}
console.log(cartInfo);  // 输出 { name : '东风' , color : "红色" , price : 999 }
案例源码:https://gitee.com/wang_fan_w/ts-seminar
如果觉得这篇文章对你有帮助,欢迎点亮一下star
【TS】接口和接口继承的更多相关文章
- java接口中多继承的问题
		
java中支撑多继承吗? 支持->接口啊 为什么接口支持多继承呢?因为接口中没有方法体!即使可能两个接口中有一样的抽象方法,但是 只会调用子类中覆盖该同样抽象方法的具体方法!不会引起调用的歧义! ...
 - Java接口之间的继承
		
/** * Created by xfyou on 2016/11/3. * 多接口之间的继承 */ public class HorrorShow { static void u(Monster b ...
 - 接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)?
		
接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)? 1. 接口可以继承接口. 2. 抽像类可以实现(implements)接 ...
 - java中接口之间的继承
		
最近在读一些源码的时候突然发现了一个很神奇的东西,它的原始形态是这样的: 在这行代码中,BlockingDeque.BlockingQueue和Deque是三个接口.刚发现这个问题时,我是十分吃惊的, ...
 - Java:接口继承接口  (多继承机制)
		
在看API文档时,突然发现一个接口可以是其他接口的子接口,这说明接口之间会存在继承的关系.查找了相关的资料,做一个总结. 是继承还是实现 首先要搞清楚接口之间的关系使用的关键字是extends还是im ...
 - 为什么java的类是单继承的,接口是多继承的
		
类 如果一个类继承了两个类,但是这两个类中有相同的方法,那么子类调用方法时,无法确定应该调用哪个父类的方法. [c++是多继承的] 接口 jdk1.7 接口可以多继承,是因为当接口中是抽象方法.不存 ...
 - java接口中的继承
		
java.util.concurrent包下的 public interface BlockingDeque<E> extends BlockingQueue<E>, Dequ ...
 - HashMap和Hashtable的区别--List,Set,Map等接口是否都继承自Map接口--Collection和Collections的区别
		
面试题: 1.HashMap和Hashtable的区别? HashMap:线程不安全,效率高,键和值都允许null值 Hashtable:线程安全,效率低,键和值都不允许null值 ArrayList ...
 - PHP实现多继承 - 通过接口的多继承特性(二)
		
原文地址:http://small.aiweimeng.top/index.php/archives/51.html 在上篇文章中写到php可以使用```Trait```实现代码的复用,下面介绍使用接 ...
 - 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?
		
接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 答:接口可以继承接口.抽象类可以实现(implements)接口,抽象类 ...
 
随机推荐
- (C++) 类与 static_cast 与 dynamic_cast
			
static_cast static_cast相当于C语言里面的强制转换,适用于: 用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换.进行上行转换(把派生类的指针或引用转换成基类表示) ...
 - Android网络请求(2)
			
Android网络请求(2) 在android网络开发中,除get请求外常见的还有post.put.delete这三种,接下来我们将详细讲解这三种请求及参数 GET请求 我们使用过get请求了,对于我 ...
 - NOI2011真题:兔兔与蛋蛋游戏
			
NOI2011真题:兔兔与蛋蛋游戏 题目描述 这些天,兔兔和蛋蛋喜欢上了一种新的棋类游戏. 这个游戏是在一个 n行 m 列的棋盘上进行的.游戏开始之前,棋盘上有一个格子是空的,其它的格子中都放置了一枚 ...
 - 树莓派配置uwsgi服务
			
前言 我配置 uwsgi 服务是为了运行给 python flask 项目,如果直接 pip3 install uwsgi 得到的uwsgi服务可以直接使用,只不过需要在命令行中启动服务(当然也可以使 ...
 - Java实现递归查询树结构
			
我们在实际开发中,肯定会用到树结构,如部门树.菜单树等等.Java后台利用递归思路进行构建树形结构数据,返回给前端,能以下拉菜单等形式进行展示.今天,咱们就来说说怎么样将List集合转换成TreeLi ...
 - 18V转5V,15V转5V的LDO和DC芯片方案
			
18V 转 5V, 15V 转 5V 的 LDO:芯片的选择,特别是输入电压,在低电平 5V 以下的,基本上都是接近也可以.但是 5V 以上,如现在的 18V 和 15 的话,就不一样了.我们需要在选 ...
 - Windows10下python3和python2同时安装(三)VS 2013配置python环境
			
Windows10下python3和python2同时安装(三) VS 2013配置python环境 说明:本文基于python2和python3同时安装之后,对VS 2013进行配置,下面有些地方文 ...
 - 10-排序6 Sort with Swap(0, i) (25point(s))
			
10-排序6 Sort with Swap(0, i) (25point(s)) Given any permutation of the numbers {0, 1, 2,..., N−1}, it ...
 - typora软件下载跟安装
			
typora软件介绍 typora是一款文本编辑器 是目前非常火爆的文本编辑器 [下载地址](Typora 官方中文站 (typoraio.cn)) 安装操作 pj链接 注意:不要更新!!! 安装 路 ...
 - nuxt.js实现页面刷新功能
			
key 属性Key:String 或者Function key属性赋值到<router-view>,这对于在动态页面和不同路径中进行转换很有用.不同的key会使页面组件重新渲染. 设置ke ...