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

TypeScript系列 :接口interfaces

简介

接口(Interfaces)是一种用于描述对象属性和方法的抽象结构,但并没有提供具体实现,要实现特定的属性和方法需要由类(class)去实现(implement)。

接口是用来规范类型的,不会被编译成JavaScript,只会在编译时参与类型检查;

属性类别

接口的属性类别主要分为四类:确定属性可选属性任意属性只读属性

确定属性

通过接口定义的变量,对于确定属性来说,其中的属性少或者多都是不被允许的,赋值操作的时候,有多少属性,就要对这些属性赋值,必须保证严格的一致性;

可选属性

当然有时候只想对部分属性赋值,可以利用接口的可选属性特性,对不太关注的属性设置为可选类型,但这样的情况下,还是不能添加未定义的属性;

任意属性

如果想利用接口对未定义的属性赋值,那就可以在接口中定义一个任意属性;

任意属性本质上就是可索引类型,由一个索引签名和索引返回类型组合,其中索引签名来描述索引的类型,索引返回类型来描述属性类型;

任意属性的声明是要用[]将属性索引签名包裹起来,同时在中括号里指定属性签名的类型;
任意属性的索引签名,也称索引器 ,其类型只有string类型和number类型;

在包含任意属性的接口里,是可以添加其他属性的,但需要注意一下情况:

  • 任意属性的索引签名类型为number时,添加的其他属性的索引签名也为number时,其类型必须是可索引类型的子类型;至于添加属性签名类型为string的其他属性(但不包括数字字符串),则没有限制;
  • 任意属性的索引签名类型为string时,添加的其他属性时其类型必须是可索引类型的子类型;
  • 同时包含以上两种任意属性时,属性签名为number的任意属性的类型是属性签名为string的任意属性的子类型;添加的其他属性时其类型必须是可索引类型的子类型;

之所以出现以上


http://www.kler.cn/a/294777.html

相关文章:

  • windows 11编译安装ffmpeg(包含ffplay)
  • vue2面试题6|[2024-11-11]
  • 数据库基础(14) . MySQL存储过程
  • 区块链技术在知识产权保护中的应用
  • vue2项目启用tailwindcss - 开启class=“w-[190px] mr-[20px]“ - 修复tailwindcss无效的问题
  • 用接地气的例子趣谈 WWDC 24 全新的 Swift Testing 入门(三)
  • BERN2(生物医学领域)命名实体识别与命名规范化工具
  • 机器学习(西瓜书)第 4 章 决策树
  • API安全 | 发现API的5个小tips
  • AtCoder Beginner Contest 370 Solution
  • vue如何实现路由缓存
  • 解决面板安装Node.js和npm后无法使用的问题
  • 浙大数据结构:堆栈和队列的定义与操作
  • 2024全国大学省数学建模竞赛A题-原创参考论文(部分+第一问代码)
  • 大数据-124 - Flink State 01篇 状态原理和原理剖析:状态类型 执行分析
  • 网页开发 HTML
  • [代码已更新]2024数学建模国赛高教社杯C题:农作物的种植策略 思路代码文章助攻手把手保姆级
  • uniapp网站和微信小程序 添加 百度统计
  • 一起学习LeetCode热题100道(71/100)
  • 大数据时代的技术hive:hive的数据类型和数据模型
  • How can I provide a RGBA png file to OpenAI PHP library
  • 前缀和 — 利用前缀信息解决子数组问题
  • 【Azure Redis】Redis-CLI连接Redis 6380端口始终遇见 I/O Error
  • 实践reflex:项目架构解析
  • 去中心化网络:Web3如何颠覆传统互联网
  • 标准IO与系统IO