在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的用法相关推荐

  1. TypeScript里的工具类型Partial的理解用法

    TypeScript里的工具类型Partial的理解用法 Partial 可以快速把某个接口类型中定义的属性类型变成可选的(Optional): 其实Partial源码很简单 Partial 可以快速 ...

  2. TypeScript 工具类型 Partial

    目录 现象: Partial 作用: Partial 实现原理: 现象: Partial 在ts项目中很常见 使用频率也相对较高 如: Partial<T> 作用: 把接口类型中定义的属性 ...

  3. TypeScript里的自定义类型用法

    新建一个index.ts: type NumGenerator = (input: number) => number;function myFunc(numGenerator: NumGene ...

  4. TypeScript 里的枚举类型 enum

    官网地址 枚举是 TypeScript 为数不多的不是 JavaScript 类型级扩展的特性之一. 枚举允许开发人员定义一组命名常量. 使用枚举可以更轻松地记录意图,或创建一组不同的案例. Type ...

  5. TypeScript里的中括号类型定义法

    下图定义了一个类型Data,可以包含一个字段,指向任意数据: https://stackoverflow.com/questions/58090665/typescript-what-is-the-t ...

  6. TypeScript里的混合类型

    TypeScript的对象可以同时做为函数和对象使用,并带有额外的属性. interface Counter {(start: number): string;interval: number;res ...

  7. 【TS】1368- 秒懂 TypeScript 泛型工具类型!

    阿宝哥精心准备的<轻松学 TypeScript> 视频教程已经更新到第十九期了,合集播放量已达 14W+.通过形象生动的动画,让你轻松搞懂 TypeScript 的难点和核心知识点! 如果 ...

  8. TypeScript 实用工具类型之 Partial 类型

    TypeScript 实用工具类型之 Partial 类型 TypeScript 实用工具类型之 Partial 类型 1. 场景概述 2. Partial<Type> 3. 使用 Int ...

  9. TypeScript 里 never 类型的用法举例

    在缩小范围时,您可以将联合的选项减少到您已删除所有可能性并且一无所有的程度. 在这些情况下,TypeScript 将使用 never 类型来表示不应该存在的状态. never 类型可分配给每种类型: ...

最新文章

  1. 用iptables自动封连接数较大的IP防止CC***的方法 zt
  2. 九余定理(hdu1013)
  3. ICITR 2021 | 排序算法中的用户公平性、item公平性和多样性
  4. Topcoder SRM 628 DIV 2
  5. java.lang.NoClassDefFoundError: org/springframework/core/ErrorCoded
  6. 代码测试意味着完全消灭了 Bug?
  7. Asp.net Ajax Control Toolkit设计编程备忘录(色眼窥观版)——第3回(UE专辑)
  8. 3.6 矩阵秩的其它重要关系
  9. 计算机触摸板设置方法,笔记本触摸板设置,小编教你笔记本触摸板怎么设置
  10. Mac 系统文件占用内存过大怎么办?
  11. matlab读取nc数据的某一列数据库,科学网—.nc数据读取详细资料matlab2010a及后面的版本 - 张凌的博文...
  12. 昔人已乘黄鹤去 此地空余黄鹤楼-崔颢
  13. kurento项目介绍
  14. 前后端分离:vue项目部署服务器操作步骤详细
  15. 有趣且重要的JS知识合集(18)浏览器实现前端录音功能
  16. 文件搜索神器everything 你不知道的技巧总结
  17. 将eclipse配置成可迁移,即直接复制就可以使用
  18. Javascript中的Number
  19. 超详细的3D视觉学习路线汇总
  20. 【BZOJ3811】【清华集训2015】玛里苟斯(线性基)

热门文章

  1. Node环境的配置与安装(windows系统)(超详细)
  2. Binlog参考资料
  3. Node.js与Sails~Model和ORM的持久化
  4. 忘记redhat linux root密码怎么办
  5. 几种流行Webservice框架性能对照
  6. maven-将maven工程打包成可执行jar包
  7. I am beginning perl
  8. spring中的注解配置
  9. 【单调栈 动态规划】bzoj1057: [ZJOI2007]棋盘制作
  10. poj-1979 dfs