TS 类型收窄教程示例详解
更新时间:2022年09月20日 14:20:34 作者:dingsheng
这篇文章主要为大家介绍了TS 类型收窄教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
类型收窄之前只能使用公共方法
JS方法
typeof
缺点
- typeof null —→ object
- typeof 数组 —→ object
- typeof 日期 —→ object
a instanceof A : A 是否出现在a的原型链上
缺点
不支持string
、number
、boolean
等原始类型
不支持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 类型收窄的资料请关注脚本之家其它相关文章!
相关文章
Vue.js React与Angular流行前端框架优势对比
这篇文章主要为大家介绍了Vue.js React与Angular流行前端框架优势对比,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-03-03Servlet3.0与纯javascript通过Ajax交互的实例详解
Servlet与纯javascript通过Ajax交互,对于很多人来说应该很简单。不过还是写写,方便Ajax学习的后来者2018-03-03
最新评论