Ts 扩展类型
扩展 类型 TS
2023-09-14 09:00:16 时间
枚举类型的扩展
例如我们有一个枚举类型,但是我们临时想扩展一个怎么办呢?
type Fruit = 'Apple' | 'Banana'; const human: {name: string, age: number, favouriteFruit: Fruit} = { name: '张三', age: 12, favouriteFruit: 'Orange' // Ts会报错,因为没有这个类型 }
我们会这样处理
type Fruit = 'Apple' | 'Banana'; const human: {name: string, age: number, favouriteFruit: Fruit | 'Orange' = { name: '张三', age: 12, favouriteFruit: 'Orange' // Ts就不会报错了 }
如果type想作为一个Object的key呢?
type Fruit = 'Apple' | 'Banana'; const human: { name: string, age: number, needFruit: { [key in Fruit]?: number } } = { name: '张三', age: 12, needFruit: { Apple: 50, Orange: 100, // Ts会报错,因为没有Organge这个类型 } }
我们会这么处理
type Fruit = 'Apple' | 'Banana'; const human: { name: string, age: number, needFruit: { [key in Fruit | 'Orange']?: number } } = { name: '张三', age: 12, needFruit: { Apple: 50, Orange: 100, // Ts就不会报错了 } }
复合类型的扩展
type Human = { name: string, age: number } const human: Human = { name: '张三', age: 22, gender: 'Male' // Ts报错,没有gender这个字段 }
这个时候,我们用到interfance
type Human = { name: string, age: number } interface SuperHuman extends Human { gender: string } const human: SuperHuman = { name: '张三', age: 22, gender: 'Male' // Ts就不报错了 }
相关文章
- 扩展 单臂路由(三个交换机 一个路由器 4台pc)
- Garadle 插件扩展属性&源集SourceSets
- JMeter 扩展插件实现对自定义协议的支持
- 【信管1.11】软件工程(五)经典架构及扩展知识
- 【地铁上的Redis与C#】数据类型--string类型数据的扩展操作
- 39. Groovy 类型检查扩展,最终篇 高级类型检查扩展
- 【地铁上的Redis与C#】数据类型(九)--set类型数据扩展操作(一)
- 扩展组件开发新体验
- 【Android Gradle 插件】Module 目录下 build.gradle 配置文件 ( android 闭包块配置 | AppExtension 扩展类型参考文档 )
- 教你使用VS Code的MySQL扩展管理数据库的方法
- .NET或将引入类型类和扩展详解编程语言
- MySQL横向扩展:极大提升技术实力(mysql横向扩展)
- 横向扩展MySQL 分库技术实现横向扩展(mysql分库实现)
- 扩展Linux虚拟机硬盘容量(虚拟机linux扩展硬盘)
- 掌握Oracle触发器类型,扩展数据库功能(oracle触发器类型)
- 利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码