TypeScript里的工具类型Partial的理解用法
TypeScript里的工具类型Partial的理解用法
- Partial 可以快速把某个接口类型中定义的属性类型变成可选的(Optional):
- 其实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= { age?: number; name?: string; }
type AnonymousPeople = Partial<People>;const tom:AnonymousPeople = {name: 'Tom'
};
编译之后:
var Jerry = {age: 10,name: 'Jerry'
};
var tom = {name: 'Tom'
};
其实Partial源码很简单
利用keyof 产生枚举类型,,in 使用枚举类型遍历
type Partial<T> = { [P in keyof T]?: T[P] };
说白了Partial可以让接口定义的类型变成包含可选的
TypeScript里的工具类型Partial的理解用法相关推荐
- TypeScript里的工具类型Partial的用法
在SAP Spartacus的源代码里我们可以观察到很多Partial的使用场景: Partial 可以快速把某个接口类型中定义的属性变成可选的(Optional): interface People ...
- TypeScript 工具类型 Partial
目录 现象: Partial 作用: Partial 实现原理: 现象: Partial 在ts项目中很常见 使用频率也相对较高 如: Partial<T> 作用: 把接口类型中定义的属性 ...
- TypeScript 里的枚举类型 enum
官网地址 枚举是 TypeScript 为数不多的不是 JavaScript 类型级扩展的特性之一. 枚举允许开发人员定义一组命名常量. 使用枚举可以更轻松地记录意图,或创建一组不同的案例. Type ...
- TypeScript里的中括号类型定义法
下图定义了一个类型Data,可以包含一个字段,指向任意数据: https://stackoverflow.com/questions/58090665/typescript-what-is-the-t ...
- TypeScript里的自定义类型用法
新建一个index.ts: type NumGenerator = (input: number) => number;function myFunc(numGenerator: NumGene ...
- TypeScript里的混合类型
TypeScript的对象可以同时做为函数和对象使用,并带有额外的属性. interface Counter {(start: number): string;interval: number;res ...
- TypeScript里的空值合并运算符(双问号)用法
当左侧操作数为 null 或 undefined 时,其返回右侧的操作数,否则返回左侧的操作数. 例子: const foo = null ?? 'default string'; 编译后的JavaS ...
- 【TS】1368- 秒懂 TypeScript 泛型工具类型!
阿宝哥精心准备的<轻松学 TypeScript> 视频教程已经更新到第十九期了,合集播放量已达 14W+.通过形象生动的动画,让你轻松搞懂 TypeScript 的难点和核心知识点! 如果 ...
- TypeScript 实用工具类型之 Partial 类型
TypeScript 实用工具类型之 Partial 类型 TypeScript 实用工具类型之 Partial 类型 1. 场景概述 2. Partial<Type> 3. 使用 Int ...
最新文章
- python之路之面向对象3
- 【转】C# 开发Chrome内核浏览器(WebKit.net)
- 手把手教你学51单片机-c语言版期末考试,手把手从零教你学51单片机
- C++——auto_ptr类
- Django从理论到实战(part29)--Field的常用参数
- 40%美国人付不起400美元意外开销,大家怎么看?
- canvas入门实战--邀请卡生成与下载
- 算法组合 优化算法_算法交易简化了风险价值和投资组合优化
- 编译JDK源代码【转】
- [转载] python关键字和保留字_Python关键字
- 类和对象之Scala程序
- 工作说明书SOW(Statement Of Work)
- 虚拟机ping通主机步骤_6在购买虚拟主机服务之前,请按照操作步骤进行操作
- Codeforces 235C Cyclical Quest
- 做个很小众的应用就可以月入数万,为什么多数程序员都不做个人开发?
- JPA中could not insert: 的解决办法
- 服务器不能读取无线网卡,无线网卡无法获得IP地址的解决方案
- 人人都是产品经理总结 第五章
- 应用进程占内存大问题分析方法
- Unity3D音频的制作
热门文章
- CWS(美国国土安全部下属的软件保证项目)与SANS(权威安全培训组织)联合编制的最危险的25个编程错误
- 穷人 与 富人 思维 比较
- 学习《华为基本法》(13):市场营销
- Elasticsearch是一把梭,用起来再说?!
- OpenGL Ant Tweak Bar的用户界面库
- Python Web框架 Django项目搭建与测试详解
- NetBackup 8.2 LinuxR Oracle脚本备份
- 用python给说说点赞的人群发新年祝福邮件
- idea风格ui java_IDEA界面太丑??尝试一下这几个风格
- linux shell ifs,【shell】IFS和$*变量