当前位置: 首页 > news >正文

前端的(typeScript)interface详解(个人学习用)

Interface 可以定义 object 类型数据 ,Interface 也称之为 Duck Typing(鸭子类型), Interface 非常灵活, 可以描述编程语言的各种类型 ,Interface 不存在 javascript 的概念,所以 ts 在编译以后,Interface 是不会被转换到 js 文件中的,所以 它(Interface)只能用来做类型的静态检查 。

 当我以为interface只是用于定义对象类型的时候,去百度发现百度是这样说的:

在面向对象的编程中,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用。接口定义了某一批类所需要遵守的规范,接口不关心这些类的内部状态数据,也不关心这些类里方法的实现细节,它只规定这批类里必须提供某些方法,提供这些方法的类就可以满足实际需要。 typescript中的接口类似于java,同时还增加了更灵活的接口类型,包括属性、函数、可索引和类等。

总的来说就是,接口是一种规范的定义,它定义了行为和动作的规范,在程序设计里面,接口起到一种限制和规范的作用,对方法的传入参数和返回值进行了约束,同时interface也提供了对属性的约束方法,示例如下:

interface Vegetable{
  color?:string, //?表示可选属性
  type:string,

  readonly size:string //readonly只读属性
}

let vegetableObj:Vegetable={ size:'small' } vegetableObj.type='carrot' //报错 提示typ是只读属性

接口之间也是可以继承的:

interface Vegetables{
  color:string
}
interface Tomato extends Vegetables{
  radius:number
}
interface Carrot extends Vegetables{
  length:number
}
const tomato:Tomato={
  radius:1,
  color:'red'
}
const carrot:Carrot={
  length:2,
  color:'blue'
}
 

相关文章:

  • Android Studio应用基础,手把手教你从入门到精通(小白学习)总结2 之 常用界面布局和ListView
  • Flink Unaligned Checkpoint
  • 数据面最流行的工具包dpdk的前世-现在和未来
  • C++异步:asio的scheduler实现!
  • 跨境电商:YouTube视频营销必看攻略
  • 01 HTTP协议相关
  • 广州市车联网车联网先导区 V2X 云控基础平台技术规范
  • 怎么申报高新?流程是什么??
  • HFSS脚本建模入门
  • 「运维有小邓」自助AD更新
  • 【LeetCode】双指针题总结(持续更新)
  • 专业的ADAS测试记录仪ETHOS
  • 【Java面试】听说Java求职者/面试官都关注了我,这道面试题一个空Object对象的占多大空间?你答的上来吗
  • CAD如何使插入的块为分解状态?CAD如何绘制五瓣花?
  • AVProVideo☀️四、视频播放案例
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 【跃迁之路】【735天】程序员高效学习方法论探索系列(实验阶段492-2019.2.25)...
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • C++类中的特殊成员函数
  • exif信息对照
  • linux学习笔记
  • mysql 5.6 原生Online DDL解析
  • Netty 4.1 源代码学习:线程模型
  • scrapy学习之路4(itemloder的使用)
  • Terraform入门 - 3. 变更基础设施
  • thinkphp5.1 easywechat4 微信第三方开放平台
  • Unix命令
  • 利用DataURL技术在网页上显示图片
  • 浅谈JavaScript的面向对象和它的封装、继承、多态
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 如何使用Mybatis第三方插件--PageHelper实现分页操作
  • 数据科学 第 3 章 11 字符串处理
  • 小程序测试方案初探
  • 验证码识别技术——15分钟带你突破各种复杂不定长验证码
  • 一些基于React、Vue、Node.js、MongoDB技术栈的实践项目
  • 你对linux中grep命令知道多少?
  • kubernetes资源对象--ingress
  • # 数论-逆元
  • #我与Java虚拟机的故事#连载11: JVM学习之路
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二)【Jmeter】专栏实战项目靶场drupal部署
  • (二十一)devops持续集成开发——使用jenkins的Docker Pipeline插件完成docker项目的pipeline流水线发布
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (力扣题库)跳跃游戏II(c++)
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)创业的注意事项
  • (转)人的集合论——移山之道
  • (转)自己动手搭建Nginx+memcache+xdebug+php运行环境绿色版 For windows版
  • .net core 实现redis分片_基于 Redis 的分布式任务调度框架 earth-frost
  • .Net CoreRabbitMQ消息存储可靠机制
  • .NET NPOI导出Excel详解
  • .net 无限分类
  • .NET 中什么样的类是可使用 await 异步等待的?
  • .net6 webapi log4net完整配置使用流程
  • .NET的数据绑定