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中的ajax分页实现代码
Sep 20 Javascript
jQuery 2.0.3 源码分析之core(一)整体架构
May 27 Javascript
JavaScript拆分字符串时产生空字符的解决方案
Sep 26 Javascript
JQuery工具函数汇总
Jun 15 Javascript
js实现点击图片自动提交action的简单方法
Oct 16 Javascript
从setTimeout看js函数执行过程
Dec 19 Javascript
微信小程序实现导航栏选项卡效果
Jun 19 Javascript
基于Vue实现可以拖拽的树形表格实例详解
Oct 18 Javascript
React 源码中的依赖注入方法
Nov 07 Javascript
vue设置默认首页的操作
Aug 12 Javascript
JS实现简易贪吃蛇游戏
Aug 24 Javascript
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 jQuery
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
php下使用curl模拟用户登陆的代码
2010/09/10 PHP
PHP获取url的函数代码
2011/08/02 PHP
用PHP的socket实现客户端到服务端的通信实例详解
2017/02/04 PHP
javascript游戏开发之《三国志曹操传》零部件开发(一)让静态人物动起来
2013/01/23 Javascript
文档对象模型DOM通俗讲解
2013/11/01 Javascript
JavaScript实现三阶幻方算法谜题解答
2014/12/29 Javascript
深入探讨JavaScript String对象
2015/03/09 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
2015/05/09 Javascript
自制微信公众号一键排版工具
2016/09/22 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
Angular中响应式表单的三种更新值方法详析
2017/08/22 Javascript
js制作简单的音乐播放器的示例代码
2017/08/28 Javascript
解决layui 复选框等内置控件不显示的问题
2018/08/14 Javascript
Vue中的v-for指令不起效果的解决方法
2018/09/27 Javascript
浅谈webpack 四个核心概念之Entry
2019/06/12 Javascript
js实现验证码干扰(动态)
2021/02/23 Javascript
[02:48]DOTA2英雄基础教程 拉席克
2013/12/12 DOTA
Django使用详解:ORM 的反向查找(related_name)
2018/05/30 Python
Pandas Shift函数的基础入门学习笔记
2018/11/16 Python
Python hexstring-list-str之间的转换方法
2019/06/12 Python
Python 脚本的三种执行方式小结
2019/12/21 Python
pytorch 修改预训练model实例
2020/01/18 Python
使用Keras加载含有自定义层或函数的模型操作
2020/06/10 Python
毕业班联欢会主持词
2014/03/27 职场文书
父母对孩子说的话
2014/04/12 职场文书
领导干部查摆“四风”问题自我剖析材料思想汇报
2014/10/05 职场文书
中学生检讨书1000字
2014/10/28 职场文书
实习工作表现评语
2014/12/31 职场文书
给老师的感谢信
2015/01/20 职场文书
第二次离婚起诉书
2015/05/18 职场文书
海洋天堂观后感
2015/06/05 职场文书
2016年班主任新年寄语
2015/08/18 职场文书
2016年9月份红领巾广播稿
2015/12/21 职场文书
学习习近平主席讲话心得体会
2016/01/20 职场文书
Python的三个重要函数详解
2022/01/18 Python
《吸血鬼幸存者》新内容发布 追加多个全新模式
2022/04/07 其他游戏