TS 类型收窄教程示例详解


Posted in Javascript onSeptember 23, 2022

类型收窄之前只能使用公共方法

JS方法

typeof

缺点

  • typeof null —→ object
  • typeof 数组 —→ object
  • typeof 日期 —→ object

a instanceof A : A 是否出现在a的原型链上

缺点

不支持stringnumberboolean 等原始类型

不支持TS的 自定义类型,如下:

type Person {
  name: string
}
  • key in obj
  • Array.isArray()

??类型谓词is

重点在 shape is Rect

type Rect = {
  width: number
  height: number
}
type Circle = {
  center: [number, number]
  radius: number
}
const area = (shape: Rect | Circle): number => {
  if(isRect(shape)) {
    return shape.width * shape.height
  } else {
    return Math.PI * shape.radius ^ 2
  }
}
const isRect = (shape: Rect | Circle): shape is Rect => {
  return 'width' in shape && 'height' in shape
}

????可辨别联合

要求:T = A | B | C

  • A | B | C … 要有一个相同的属性 type或其它
  • type类型只能为 简单类型
  • A | B | C …的type属性无交集
type Rect = {
  type: 'rect',
  width: number
  height: number
}
type Circle = {
  type: 'circle'
  center: [number, number]
  radius: number
}
const area = (shape: Rect | Circle): number => {
  if(shape.type === 'rect') {
    return shape.width * shape.height
  } else {
    return Math.PI * shape.radius ^ 2
  }
}

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

Javascript 相关文章推荐
FireFox与IE 下js兼容触发click事件的代码
Nov 20 Javascript
JavaScript起点(严格模式深度了解)
Jan 28 Javascript
JS中Date日期函数中的参数使用介绍
Jan 02 Javascript
在JavaScript中正确引用bind方法的应用
May 11 Javascript
基于jQuery+PHP+Mysql实现在线拍照和在线浏览照片
Sep 06 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
Sep 30 Javascript
js获取当前日期时间及其它日期操作汇总
Mar 08 Javascript
xcode中获取js文件的路径方法(推荐)
Nov 05 Javascript
js省市区级联查询(插件版&无插件版)
Mar 21 Javascript
JS将unicode码转中文方法
May 08 Javascript
jQuery实现简单的滑动导航代码(移动端)
May 22 jQuery
Vue状态模式实现窗口停靠功能(灵动、自由, 管理后台Admin界面)
Mar 06 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实现音乐播放器
vue el-table实现递归嵌套的示例代码
Aug 14 #Vue.js
You might like
ThinkPHP基于PHPExcel导入Excel文件的方法
2014/10/15 PHP
php学习笔记之基础知识
2014/11/08 PHP
WordPress免插件实现面包屑导航的示例代码
2020/08/20 PHP
解析使用JS 清空File控件的路径值
2013/07/08 Javascript
js获取select选中的option的text示例代码
2013/12/19 Javascript
windows 下安装nodejs 环境变量设置
2017/02/02 NodeJs
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
jQuery中元素选择器(element)简单用法示例
2018/05/14 jQuery
JavaScript继承与多继承实例分析
2018/05/26 Javascript
JavaScript中Array方法你该知道的正确打开方法
2018/09/11 Javascript
vue滚动tab跟随切换效果
2020/06/29 Javascript
微信小程序全局变量GLOBALDATA的定义和调用过程解析
2019/09/23 Javascript
详解ES6数组方法find()、findIndex()的总结
2020/05/12 Javascript
python使用multiprocessing模块实现带回调函数的异步调用方法
2015/04/18 Python
python executemany的使用及注意事项
2017/03/13 Python
windows下Virtualenvwrapper安装教程
2017/12/13 Python
python MNIST手写识别数据调用API的方法
2018/08/08 Python
python使用插值法画出平滑曲线
2018/12/15 Python
Python一行代码实现快速排序的方法
2019/04/30 Python
python实现动态创建类的方法分析
2019/06/25 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
django中账号密码验证登陆功能的实现方法
2019/07/15 Python
Cython编译python为so 代码加密示例
2019/12/23 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
使用canvas压缩图片大小的方法示例
2019/08/02 HTML / CSS
母亲节演讲稿范文
2014/01/02 职场文书
二年级语文教学反思
2014/02/02 职场文书
大专会计自我鉴定
2014/02/06 职场文书
《跨越海峡的生命桥》教学反思
2014/02/24 职场文书
班主任班级寄语大全
2014/04/04 职场文书
《孔繁森》教学反思
2014/04/17 职场文书
市场推广策划方案
2014/06/02 职场文书
公安派出所所长四风问题个人对照检查材料
2014/10/04 职场文书
单位领导婚礼致辞
2015/07/28 职场文书
2016年秋季运动会通讯稿
2015/11/25 职场文书
Logback 使用TurboFilter实现日志级别等内容的动态修改操作
2021/08/30 Java/Android