TS类型收窄教程示例详解
短信预约 -IT技能 免费直播动态提醒
类型收窄之前只能使用公共方法
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 类型收窄的资料请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341