Ts接口的使用

2023-11-17

TypeScript 的核心原则之一是对值所具有的结构进行类型检查。我们使用接口(Interfaces)来定义对象的类型。接口是对象的状态(属性)和行为(方法)的抽象(描述)

接口初探

需求: 创建人的对象, 需要对人的属性进行一定的约束

id是number类型, 必须有, 只读的
name是string类型, 必须有
age是number类型, 必须有
sex是string类型, 可以没有

下面通过一个简单示例来观察接口是如何工作的:
可选属性: ?
只读属性: readonly

/* 
在 TypeScript 中,我们使用接口(Interfaces)来定义对象的类型
接口: 是对象的状态(属性)和行为(方法)的抽象(描述)
接口类型的对象
    多了或者少了属性是不允许的
    可选属性: ?
    只读属性: readonly
*/

/* 
需求: 创建人的对象, 需要对人的属性进行一定的约束
  id是number类型, 必须有, 只读的
  name是string类型, 必须有
  age是number类型, 必须有
  sex是string类型, 可以没有
*/

// 定义人的接口
interface IPerson {
  readyonly id: number
  name: string
  age: number
  sex?: string
}

const person1: IPerson = {
  id: 1,
  name: 'tom',
  age: 20,
  sex: '男'
}

类型检查器会查看对象内部的属性是否与IPerson接口描述一致, 如果不一致就会提示类型错误。

可选属性

接口里的属性不全都是必需的。 有些是只在某些条件下存在,或者根本不存在。

interface IPerson {
  id: number
  name: string
  age: number
  sex?: string
}
带有可选属性的接口与普通的接口定义差不多,只是在可选属性名字定义的后面加一个 ? 符号。

可选属性的好处之一是可以对可能存在的属性进行预定义,好处之二是可以捕获引用了不存在的属性时的错误。

const person2: IPerson = {
  id: 1,
  name: 'tom',
  age: 20,
  // sex: '男' // 可以没有
}

只读属性

一些对象属性只能在对象刚刚创建的时候修改其值。 你可以在属性名前用 readonly 来指定只读属性:

interface IPerson {
  readonly id: number
  name: string
  age: number
  sex?: string
}
一旦赋值后再也不能被改变了。

const person2: IPerson = {
  id: 2,
  name: 'tom',
  age: 20,
  // sex: '男' // 可以没有
  // xxx: 12 // error 没有在接口中定义, 不能有
}
person2.id = 2 // error

readonly vs const

最简单判断该用 readonly 还是 const 的方法是看要把它做为变量使用还是做为一个属性。 做为变量使用的话用 const,若做为属性则使用 readonly。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ts接口的使用 的相关文章

随机推荐

  • 《深入理解计算机系统》(美)布赖恩特(Bryant,R.E.) 等

    书籍 深入理解计算机系统 美 布赖恩特 Bryant R E 等 适合对象 对计算机感兴趣的朋友 需要相关资料的可私信我 2023 09 20更新完成 先上个大纲框架图 第一章 计算机系统漫游 主要知识点 解读全书结构框架 解释OS的原理和
  • 第2章 在网页中使用JavaScript

    第2章 在网页中使用JavaScript 与能够独立执行的C C 等传统语言不同 执行JavaScript代码需要HTML网页环境 在当初开发JavaScript时 Netscape把JavaScript定位为嵌入式Web脚本语言 这种做法
  • 数据科学库——numpy读取本地数据

    轴 在numpy中可以理解为方向 使用0 1 2 数字表示 对于一个一维数组 只有一个0轴 对于2维数组 shape 2 2 有0轴和1轴 对于三维数组 shape 2 2 3 有0 1 2轴 numpy读取数据 CSV Comma Sep
  • 机构运动学分析

    背景介绍 空间机构具有结构紧凑 运动灵活等特点 在航空航天 精密仪器以及工业设备等领域具有广泛的应用 调研发现 机械臂一般采用伺服电机作为动力源 通过空间连杆驱动末端执行器 大大的减轻了工人的劳动强度 本节中主要是针对RSSR空间连杆机构进
  • 计算机考研国家线2021分数线,2021考研分数线和国家线公布时间

    考研国家线总体上分为学术型复试分数线和专业学位类分数线 也就是通常所说的学硕和专硕复试线 考试年份 考研国家线公布时间 2021年 2021年3月中旬左右 2020年 2020年4月13日 2019年 2019年3月15日 2018年 20
  • WPF使用ResourceDictionary

    WPF使用ResourceDictionary 初级篇1 1 首先建立资源字典文件 也就是一个xaml的文件 先添加一个背景色资源代码 2 调用资源资源中的资源 3 使用资源字典中的资源 参考 MSDN
  • GitHub网页 详解

    文章目录 1 登陆后标题栏 2 主页左侧部分 3 设置页面 4 组织页 5 仓库页 6 新建仓库 7 解决冲突 1 登陆后标题栏 下面从左到右 从上到下全部讲述一遍 GitHub图标 点击后跳转到登录后的首页 搜索框 输入关键字 查询相关的
  • 大气压力换算公式_压强单位bar,psi,pa,mpa,kg换算公式

    压强单位 1巴 bar 100000帕 Pa 10牛顿 平方厘米 0 1MPa 是压强的单位 早先气象学中常用毫巴 现在改用等值的国际单位百帕 1帕是1帕斯卡的简称 就是一平方米受到一牛顿的压力 在工程上仍在沿用公斤力这个单位 1公斤力等于
  • 翻译java代码软件_apk源代码翻译器

    APK源代码翻译器 安卓APK代码命令查看工具 是吾爱网友用易语言制作的安卓代码命令查看工具 该工具体积小 但功能强大 欢迎下载使用 软件说明 将apk文件拷贝至sdcard上 命令顺序如下 进入Android sdk文件夹 tools目录
  • 生成 enum 类——数字字典里新增一个按钮 生成他们对应得枚举——java

    前 后 码片 数字字典里新增一个按钮 生成他们对应得枚举 后端 xml 创建一个enum ftl Description dict dictName Author ksf Date now string yyyy MM dd Version
  • sql server 经典练习题分享二

    26 查询存在有85分以上成绩的课程Cno SELECT DISTINCT cno FROM dbo scores WHERE degree gt 85 27 查询出 计算机系 教师所教课程的成绩表 SELECT tname prof cn
  • 23. 客户默认选项(Default Customer Options)

    Editing Email Templates Email Sender Contact Us
  • iphone尺寸_2007至2020:最全的iPhone手机25部历代发展及价格变化历史

    所以iPhone SE 2020 是真的廉价倒地了 智能手机时代的开始 第一代iPhone 2G 2007 4G 3800 8G 4560 2007年 史蒂夫 乔布斯 Steve Jobs 穿着运动鞋 牛仔裤 T恤站在舞台上 宣布了第一部i
  • Maven、pom.xml

    maven库中心 Maven Central Repository Search 搜索可以用的包与版本 目录 Maven 使用方法 1 下载 配置 2 项目中使用 3 生命周期 4 构建插件 MAVEN工程 的目录结构 父子项目 创建父项目
  • dpr-2000 四usb口无线多功能打印服务器,D-Link DPR-2000 超高兼容的打印服务器

    PConline资讯 DPR 2000无线802 11 G多功能打印服务器是一个通用多端口的打印服务器 是办公 学校和商业使用的理想选择 它提供4个USB连接接口可以连接4台USB打印机 本设备给用户提供添加多个打印机 多功能打印机或扫描仪
  • vue项目使用luckyexcel插件预览excel表格

    温馨提示 需要用到luckysheet文件和luckyexcel插件 根据下面步骤一步一步操作会避免踩坑 比如我当时遇到了window luckysheet is not defined控制台报红的问题 第一步 引入luckysheet的相
  • JAVA单元测试框架-14-实现TestNG失败案例重跑

    前面是通过java代码指定重跑 本节是讲解通过实现IAnnotationTransformer接口实现失败案例重跑 创建MyRetry 实现IRetryAnalyzer 接口 package Listener import org test
  • MMsegmentation文档学习

    1 了解配置 config文件结构 config base 下有4种基本组件类型 dataset model schedule default runtime 同一文件夹下的所有配置 建议只具有一个原始配置 所有其他配置从原始配置继承 这样
  • JDK8升级JDK11最全实践干货来了

    1 前言 截至目前 2023年 Java8发布至今已有9年 2018年9月25日 Oracle发布了Java11 这是Java8之后的首个LTS版本 那么从JDK8到JDK11 到底带来了哪些特性呢 值得我们升级吗 而且升级过程会遇到哪些问
  • Ts接口的使用

    TypeScript 的核心原则之一是对值所具有的结构进行类型检查 我们使用接口 Interfaces 来定义对象的类型 接口是对象的状态 属性 和行为 方法 的抽象 描述 接口初探 需求 创建人的对象 需要对人的属性进行一定的约束 id是