接口

接口也相当于语法规范,在使用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】接口和接口继承的更多相关文章

  1. java接口中多继承的问题

    java中支撑多继承吗? 支持->接口啊 为什么接口支持多继承呢?因为接口中没有方法体!即使可能两个接口中有一样的抽象方法,但是 只会调用子类中覆盖该同样抽象方法的具体方法!不会引起调用的歧义! ...

  2. Java接口之间的继承

    /** * Created by xfyou on 2016/11/3. * 多接口之间的继承 */ public class HorrorShow { static void u(Monster b ...

  3. 接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)?

    接口是否可继承接口? 抽像类是否可实现(implements)接口? 抽像类是否可继承实体类(concrete class)? 1. 接口可以继承接口. 2. 抽像类可以实现(implements)接 ...

  4. java中接口之间的继承

    最近在读一些源码的时候突然发现了一个很神奇的东西,它的原始形态是这样的: 在这行代码中,BlockingDeque.BlockingQueue和Deque是三个接口.刚发现这个问题时,我是十分吃惊的, ...

  5. Java:接口继承接口 (多继承机制)

    在看API文档时,突然发现一个接口可以是其他接口的子接口,这说明接口之间会存在继承的关系.查找了相关的资料,做一个总结. 是继承还是实现 首先要搞清楚接口之间的关系使用的关键字是extends还是im ...

  6. 为什么java的类是单继承的,接口是多继承的

    类 如果一个类继承了两个类,但是这两个类中有相同的方法,那么子类调用方法时,无法确定应该调用哪个父类的方法. [c++是多继承的] 接口 jdk1.7  接口可以多继承,是因为当接口中是抽象方法.不存 ...

  7. java接口中的继承

    java.util.concurrent包下的 public interface BlockingDeque<E> extends BlockingQueue<E>, Dequ ...

  8. HashMap和Hashtable的区别--List,Set,Map等接口是否都继承自Map接口--Collection和Collections的区别

    面试题: 1.HashMap和Hashtable的区别? HashMap:线程不安全,效率高,键和值都允许null值 Hashtable:线程安全,效率低,键和值都不允许null值 ArrayList ...

  9. PHP实现多继承 - 通过接口的多继承特性(二)

    原文地址:http://small.aiweimeng.top/index.php/archives/51.html 在上篇文章中写到php可以使用```Trait```实现代码的复用,下面介绍使用接 ...

  10. 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)?

    接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承实体类(concrete class)? 答:接口可以继承接口.抽象类可以实现(implements)接口,抽象类 ...

随机推荐

  1. (C++) 类与 static_cast 与 dynamic_cast

    static_cast static_cast相当于C语言里面的强制转换,适用于: 用于类层次结构中基类(父类)和派生类(子类)之间指针或引用的转换.进行上行转换(把派生类的指针或引用转换成基类表示) ...

  2. Android网络请求(2)

    Android网络请求(2) 在android网络开发中,除get请求外常见的还有post.put.delete这三种,接下来我们将详细讲解这三种请求及参数 GET请求 我们使用过get请求了,对于我 ...

  3. NOI2011真题:兔兔与蛋蛋游戏

    NOI2011真题:兔兔与蛋蛋游戏 题目描述 这些天,兔兔和蛋蛋喜欢上了一种新的棋类游戏. 这个游戏是在一个 n行 m 列的棋盘上进行的.游戏开始之前,棋盘上有一个格子是空的,其它的格子中都放置了一枚 ...

  4. 树莓派配置uwsgi服务

    前言 我配置 uwsgi 服务是为了运行给 python flask 项目,如果直接 pip3 install uwsgi 得到的uwsgi服务可以直接使用,只不过需要在命令行中启动服务(当然也可以使 ...

  5. Java实现递归查询树结构

    我们在实际开发中,肯定会用到树结构,如部门树.菜单树等等.Java后台利用递归思路进行构建树形结构数据,返回给前端,能以下拉菜单等形式进行展示.今天,咱们就来说说怎么样将List集合转换成TreeLi ...

  6. 18V转5V,15V转5V的LDO和DC芯片方案

    18V 转 5V, 15V 转 5V 的 LDO:芯片的选择,特别是输入电压,在低电平 5V 以下的,基本上都是接近也可以.但是 5V 以上,如现在的 18V 和 15 的话,就不一样了.我们需要在选 ...

  7. Windows10下python3和python2同时安装(三)VS 2013配置python环境

    Windows10下python3和python2同时安装(三) VS 2013配置python环境 说明:本文基于python2和python3同时安装之后,对VS 2013进行配置,下面有些地方文 ...

  8. 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 ...

  9. typora软件下载跟安装

    typora软件介绍 typora是一款文本编辑器 是目前非常火爆的文本编辑器 [下载地址](Typora 官方中文站 (typoraio.cn)) 安装操作 pj链接 注意:不要更新!!! 安装 路 ...

  10. nuxt.js实现页面刷新功能

    key 属性Key:String 或者Function key属性赋值到<router-view>,这对于在动态页面和不同路径中进行转换很有用.不同的key会使页面组件重新渲染. 设置ke ...