接口

接口也相当于语法规范,在使用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

最新文章

  1. Maven多模块,Dubbo分布式服务框架,SpringMVC,前后端分离项目,基础搭建,搭建过程出现的问题
  2. ASP.NET 字符编码的那些事
  3. iOS之2016面试题二
  4. zepto插件 countdown 倒计时插件 从jquery 改成 zepto
  5. VTK初学一,b_PolyVertex_CellArray多个点的绘制
  6. Intent和Intent Filter Context
  7. ASPNET服务端控件练习(一个机试题)
  8. java写的web服务器
  9. trackr: An AngularJS app with a Java 8 backend – Part II
  10. mojo 默认启用utf-8
  11. stdafx文件介绍
  12. LOJ6003 - 「网络流 24 题」魔术球
  13. 林业资源遥感航拍监测GIS系统
  14. “天龙八步”细说浏览器输入URL后发生了什么
  15. WPF 使用Console.Write打印信息到控制台窗口中
  16. Angularjs 学习笔记-2017-02-05-初识Angular及app、model、controller、repeat指令和fileter、orderBy
  17. python Django 无法获取post 参数问题
  18. C# GDI+编程之Graphics类
  19. 数据分析系统DIY1/3:CentOS7+MariaDB安装纪实
  20. 3 爬虫解析 Xpath 和 BeautifulSoup

热门文章

  1. 关于linux配置java环境变量问题
  2. Vue 打包报错UnhandledPromiseRejectionWarning: postcss-svgo: Error in parsing SVG
  3. day35-JSON&Ajax03
  4. [数学建模]层次分析法AHP
  5. C++基础语法学习:STL
  6. python 之异常捕获及处理(try--except)
  7. 启动springboot项目报错Unable to start embedded Tomcat
  8. [机器学习] Yellowbrick使用笔记4-目标可视化
  9. react 高效高质量搭建后台系统 系列 —— antd和样式
  10. 聊聊web漏洞挖掘第一期