typescript可辨识联合
如果一个类型是多个类型的联合类型,且多个类型含有一个公共属性,那么就可以利用这个公共属性,来创建不同的类型保护区块。
enum CarTransmission {Automatic = 200,Manual = 300
}interface Motorcycle {vType: "motorcycle"; // discriminantmake: number; // year
}interface Car {vType: "car"; // discriminanttransmission: CarTransmission
}interface Truck {vType: "truck"; // discriminantcapacity: number; // in tons
}
基于前面定义了三个接口,我们可以创建一个 Vehicle
联合类型:
type Vehicle = Motorcycle | Car | Truck;
接下来进行类型守卫
function evaluatePrice(vehicle: Vehicle) {switch(vehicle.vType) {case "car":return vehicle.transmission * EVALUATION_FACTOR;case "truck":return vehicle.capacity * EVALUATION_FACTOR;case "motorcycle":return vehicle.make * EVALUATION_FACTOR;}
}
完整demo
interface car{type:'car',age:number
}
interface bicycle{type:'bicycle',sex: number
}
interface boat{type:'boat',grade:number
}type Vehicle = car | bicycle | boat;
const EVALUATION_FACTOR = Math.PI; function evaluatePrice(vehicle: Vehicle) {switch(vehicle.type) {case "car":return vehicle.age * EVALUATION_FACTOR;case "bicycle":return vehicle.sex * EVALUATION_FACTOR;case "boat":return vehicle.grade * EVALUATION_FACTOR;}
}const myTruck: car = { type: "car", age: 9.5 };
const VehicleDate = evaluatePrice(myTruck);
console.log(VehicleDate);
typescript可辨识联合相关推荐
- TypeScript基础入门之高级类型的可辨识联合(Discriminated Unions)
2019独角兽企业重金招聘Python工程师标准>>> 转发 TypeScript基础入门之高级类型的可辨识联合(Discriminated Unions) 高级类型 可辨识联合(D ...
- TypeScript中的联合类型、类型别名、接口、类型断言
一.联合类型 在TypeScript中,联合类型(Union Types)是指用"|"符号将多个类型组合成一个的类型.这种类型可以包含不同的类型,例如字符串.数字或对象.这些不同类 ...
- TypeScrpt 学习指南
最近比较懒 哎 大秦赋 大秦帝国 太好看了 彩 彩 彩 本文,日常白嫖大佬的文章,分享出来. 一.TypeScript 是什么 TypeScript 是一种由微软开发的自由和开源的编程语言.它是 Ja ...
- 「1.8W字」2020不可多得的 TS 学习指南
阿宝哥第一次使用 TypeScript 是在 Angular 2.x 项目中,那时候 TypeScript 还没有进入大众的视野.而现在学习 TypeScript 的小伙伴越来越多了,本文阿宝哥将从 ...
- 硬干货!1.8W字TS 学习指南,我不信你一口气能读完(建议收藏)
阿宝哥第一次使用 TypeScript 是在 Angular 2.x 项目中,那时候 TypeScript 还没有进入大众的视野.而现在学习 TypeScript 的小伙伴越来越多了,本文阿宝哥将从 ...
- TypeScript学习(三):联合类型及推论
前面说到了typescript中的数据类型的定义及类型推论,定义的方式也就是单数据类型定义或者是任意类型的定义,但是我们在开发中,有时候会涉及到一些变量的值类型校验,例如只需要数值和字符串,或者数值和 ...
- typescript 数据类型、函数返回值、类型断言、联合类型、类型兼容
null和undefined类型:是所有类型的子类型,即可以将任意类型赋值为二者any类型:可以赋值任何类型unknown类型:引入的顶级类型unknown,对照于any,unknown是类型安全的, ...
- typescript设置默认值_TypeScript 中神奇的 this 类型声明
创建了一个"重学TypeScript"的微信群,想加群的小伙伴,加我微信"semlinker",备注重学TS哟 从 TypeScript 2.0 开始,在函数和 ...
- TypeScript 令我苦不堪言
作者 | Ilya Suzdalnitski 责编 | 弯月 出品 | CSDN(ID:CSDNnews) 你是否被 TypeScript 的炒作假象所欺骗?TypeScript 真比 JavaScr ...
最新文章
- POJ1988 Cube Stacking
- elasticsearch分组统计,取最大值、最小值、求和
- java——File类常用方法
- C++ 使用A*算法解决八数码问题
- 一道经典极限题的分析与求解
- 关于Adodb.Stream 的使用说明
- Effective STL中文版 译序
- 绘制自己的人际关系图_攒人脉,建圈子,从绘制一张人际关系图开始。
- 全国职称计算机题库视频,全国职称计算机考试题库模拟训练—windowsXP
- html 制作箭头,怎么使用html制作箭头?制作箭头代码分享!
- Photoshop制作电影胶片效果
- 【题库】上海市学校心理咨询师-普通心理学-考点解析 13.3 性格测量
- Typescript浅尝
- [华硕路由器官方设置]ASUS RT-AC86U官方设置
- Insomnia下载
- 变焦 焦距 等效焦距
- 趣聊51之串口通信(实现篇)
- linux查看进程并kill
- 《图说VR入门》——DK2入门及其资源汇总
- 华大单片机 HC32F460 驱动BM8563ESA RTC芯片
热门文章
- 关于Netty的ByteBuff内存泄漏问题
- linux挂载NTFS分区
- Linux下安装Redmine(项目管理软件)
- .NET调用Oracle存储过程,使用数组类型的参数(如ArrayList)
- iOS8+ UITableView自动计算cell高度并缓存
- 6.22软件工程总结
- 关于[[NSNotificationCenter defaultCenter] addObserver不remove后续又收到通知crash问题
- 局部类型 之 部分方法
- windows和linux下的spice客户端使用方法
- homebrew install php53