TS 类型兼容教程示例详解


Posted in Javascript onSeptember 23, 2022

类型兼容

因为JS语言不慎过于领过, 真实开发场景中往往无法做到严格一致的类型约束,此时TS就不得不做类型兼容

  • 顶类型:unknown -- 任何类型都可以赋值给unknown
  • 底类型:never -- never兼容任何类型(可以赋值给任何类型)
  • any: 其实不是一个类型,它是一个错误关闭器,用了any就等同于放弃了类型约束

TS 类型兼容教程示例详解

TS 类型兼容教程示例详解

简单类型兼容

子集可以赋值给父级

type name = string | number

stringnumber 都是 类型name 的子集

普通对象兼容

属性多的可以赋值给属性少的,前提是有共同属性

  • 属性越多,限制越多,表示的集合越小(符合条件的对象越少)
  • 属性越少,限制越少,表示的集合越大
type Person = {
  name: string
  age: number
}
let user = {
  name: 'liu',
  age: 20,
  email: ''
}
let p: Person = user

函数兼容

参数数量不一致

数量少的兼容数量多的,前提为类型一致

TS 类型兼容教程示例详解

只要参数部分能够找到对应的位置就用**==绿色箭头==,否则为==红色箭头==**,当参数全为绿色箭头时,最左侧的箭头就为绿色,代表函数可以兼容

参数类型不一致

参数部分: 子类可以兼容父类,则函数整体不能兼容,

MyMouseEventMyEvent 的子类,所以mouseListener 不兼容 listener

==对参数要求多的函数不能赋值给对参数要求少的函数==

MyEventMyMouseEvent 的父类,所以listener 兼容 mouseListener

TS 类型兼容教程示例详解

返回不同

返回值属性多集合小 可以 兼容 返回值属性少集合大

TS 类型兼容教程示例详解

以上就是TS 类型兼容教程示例详解的详细内容,更多关于TS 类型兼容的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
jquery select下拉框操作的一些说明
Apr 02 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
Jan 08 Javascript
JS实现弹性菜单效果代码
Sep 07 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
Jun 24 Javascript
vue2项目使用sass的示例代码
Jun 28 Javascript
详解jquery插件jquery.viewport.js学习使用方法
Sep 08 jQuery
JavaScript 判断对象中是否有某属性的常用方法
Jun 14 Javascript
Vue脚手架的简单使用实例
Jul 10 Javascript
微信小程序复选框实现多选一功能过程解析
Feb 14 Javascript
JS通用方法触发点击事件代码实例
Feb 17 Javascript
小程序实现可拖动的悬浮按钮
Sep 07 Javascript
Java 生成随机字符的示例代码
Jan 13 Javascript
TS 类型收窄教程示例详解
Sep 23 #Javascript
JavaScript实现简单的音乐播放器
Aug 14 #Javascript
vue实现简易音乐播放器
Aug 14 #Vue.js
Vue3实现简易音乐播放器组件
Aug 14 #Vue.js
element tree树形组件回显数据问题解决
Aug 14 #Javascript
el-table-column 内容不自动换行的解决方法
Aug 14 #Vue.js
JavaScript实现音乐播放器
You might like
详细介绍:Apache+PHP+MySQL配置攻略
2006/09/05 PHP
php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
2007/03/07 PHP
标准版Eclipse搭建PHP环境的详细步骤
2015/11/18 PHP
简单实现PHP留言板功能
2016/12/21 PHP
YII2自动登录Cookie总是失效的解决方法
2017/06/28 PHP
Laravel实现定时任务的示例代码
2017/08/10 PHP
JS 遮照层实现代码
2010/03/31 Javascript
js css后面所带参数含义介绍
2013/08/18 Javascript
js实现分割上传大文件
2016/03/09 Javascript
AngularJs页面筛选标签小功能
2016/08/01 Javascript
微信小程序 连续旋转动画(this.animation.rotate)详解
2017/04/07 Javascript
JS逻辑运算符短路操作实例分析
2018/07/09 Javascript
微信小程序实现滴滴导航tab切换效果
2018/07/24 Javascript
小程序自定义单页面、全局导航栏的实现代码
2019/03/15 Javascript
webpack中的模式(mode)使用详解
2020/02/20 Javascript
Python下singleton模式的实现方法
2014/07/16 Python
Python判断某个用户对某个文件的权限
2016/10/13 Python
python使用turtle库与random库绘制雪花
2018/06/22 Python
python设置值及NaN值处理方法
2018/07/03 Python
利用arcgis的python读取要素的X,Y方法
2018/12/22 Python
使用Python求解带约束的最优化问题详解
2020/02/11 Python
python实现堆排序的实例讲解
2020/02/21 Python
深入了解Python 变量作用域
2020/07/24 Python
python实现逻辑回归的示例
2020/10/09 Python
智能钱包:Ekster
2019/11/21 全球购物
J2EE面试题大全
2016/08/06 面试题
Java如何支持I18N?
2016/10/31 面试题
小学生防溺水广播稿
2014/01/12 职场文书
会计专业求职信范文
2014/03/16 职场文书
公关活动策划方案
2014/05/25 职场文书
个人对照检查剖析材料
2014/10/13 职场文书
2014年组织部工作总结
2014/11/14 职场文书
护士求职自荐信
2015/03/25 职场文书
毕业设计答辩开场白
2015/05/29 职场文书
Lombok的详细使用及优缺点总结
2021/07/15 Java/Android
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL