TypeScript里的工具类型Partial的用法
在SAP Spartacus的源代码里我们可以观察到很多Partial的使用场景:
Partial 可以快速把某个接口类型中定义的属性变成可选的(Optional):
interface People {age: number;name: string;
}const Jerry:People = {age: 10,name: 'Jerry'
};const Tom: People = {name: 'Tom'
}
上述代码会发生编译时错误:
1.ts:11:7 - error TS2741: Property ‘age’ is missing in type ‘{ name: string; }’ but required in type ‘People’.
解决方法:
interface People {age: number;name: string;
}const Jerry:People = {age: 10,name: 'Jerry'
};type AnonymousPeople = Partial<People>;const tom:AnonymousPeople = {name: 'Tom'
};
编译之后:
var Jerry = {age: 10,name: 'Jerry'
};
var tom = {name: 'Tom'
};
这个工具类型的实现毫无神奇之处:
type Partial<T> = {[P in keyof T]?: T[P];
};
我们完全可以自行实现:
interface People {age: number;name: string;
}const Jerry:People = {age: 10,name: 'Jerry'
};type JerryPartial<T> = {[P in keyof T]?: T[P];
};type AnonymousPeople = JerryPartial<People>;const tom:AnonymousPeople = {name: 'Tom'
};
更多Jerry的原创文章,尽在:“汪子熙”:
TypeScript里的工具类型Partial的用法相关推荐
- TypeScript里的工具类型Partial的理解用法
TypeScript里的工具类型Partial的理解用法 Partial 可以快速把某个接口类型中定义的属性类型变成可选的(Optional): 其实Partial源码很简单 Partial 可以快速 ...
- TypeScript 工具类型 Partial
目录 现象: Partial 作用: Partial 实现原理: 现象: Partial 在ts项目中很常见 使用频率也相对较高 如: Partial<T> 作用: 把接口类型中定义的属性 ...
- TypeScript里的自定义类型用法
新建一个index.ts: type NumGenerator = (input: number) => number;function myFunc(numGenerator: NumGene ...
- TypeScript 里的枚举类型 enum
官网地址 枚举是 TypeScript 为数不多的不是 JavaScript 类型级扩展的特性之一. 枚举允许开发人员定义一组命名常量. 使用枚举可以更轻松地记录意图,或创建一组不同的案例. Type ...
- TypeScript里的中括号类型定义法
下图定义了一个类型Data,可以包含一个字段,指向任意数据: https://stackoverflow.com/questions/58090665/typescript-what-is-the-t ...
- TypeScript里的混合类型
TypeScript的对象可以同时做为函数和对象使用,并带有额外的属性. interface Counter {(start: number): string;interval: number;res ...
- 【TS】1368- 秒懂 TypeScript 泛型工具类型!
阿宝哥精心准备的<轻松学 TypeScript> 视频教程已经更新到第十九期了,合集播放量已达 14W+.通过形象生动的动画,让你轻松搞懂 TypeScript 的难点和核心知识点! 如果 ...
- TypeScript 实用工具类型之 Partial 类型
TypeScript 实用工具类型之 Partial 类型 TypeScript 实用工具类型之 Partial 类型 1. 场景概述 2. Partial<Type> 3. 使用 Int ...
- TypeScript 里 never 类型的用法举例
在缩小范围时,您可以将联合的选项减少到您已删除所有可能性并且一无所有的程度. 在这些情况下,TypeScript 将使用 never 类型来表示不应该存在的状态. never 类型可分配给每种类型: ...
最新文章
- 用iptables自动封连接数较大的IP防止CC***的方法 zt
- 九余定理(hdu1013)
- ICITR 2021 | 排序算法中的用户公平性、item公平性和多样性
- Topcoder SRM 628 DIV 2
- java.lang.NoClassDefFoundError: org/springframework/core/ErrorCoded
- 代码测试意味着完全消灭了 Bug?
- Asp.net Ajax Control Toolkit设计编程备忘录(色眼窥观版)——第3回(UE专辑)
- 3.6 矩阵秩的其它重要关系
- 计算机触摸板设置方法,笔记本触摸板设置,小编教你笔记本触摸板怎么设置
- Mac 系统文件占用内存过大怎么办?
- matlab读取nc数据的某一列数据库,科学网—.nc数据读取详细资料matlab2010a及后面的版本 - 张凌的博文...
- 昔人已乘黄鹤去 此地空余黄鹤楼-崔颢
- kurento项目介绍
- 前后端分离:vue项目部署服务器操作步骤详细
- 有趣且重要的JS知识合集(18)浏览器实现前端录音功能
- 文件搜索神器everything 你不知道的技巧总结
- 将eclipse配置成可迁移,即直接复制就可以使用
- Javascript中的Number
- 超详细的3D视觉学习路线汇总
- 【BZOJ3811】【清华集训2015】玛里苟斯(线性基)