ts泛型、接口、泛型工具record、Pick、Omit
泛型:目的是在成员之间提供有意义的约束,这些成员可以是:类的实例成员、类的方法、函数参数和函数返回值。
Record:它用来生成一个属性为 K,类型为 T 的类型集合。
type Foo = Record<'a', string>
生成的对象key都为’a’,value只能为string类型
Pick:从 T 中将所有的 K 取出来,并生成一个新的类型。
const foo: Pick<IFoo, 'a'>
使用 Pick 生成的新类型只包含 a 属性
Omit:用来忽略 T 中的 K 属性
type UserWithoutEmail = Omit<User, 'email'>
忽略User中的email属性
JS和TS区别
- TypeScript是静态类型,TS是动态类型
- 定义变量的时候,TS必须指定数据类型,JS不确定
- TS是JS的超集,在TS中可以使用原生JS语法
JS和TS各自优势
1、TS
- 静态输入:在开发人员编写脚本时检测错误,查找并修复错误
- 大型的开发项目和更好的协作:当开发大型项目时,会有许多开发人员,此时乱码和错误的机也会增加。类型安全是一种在编码期间检测错误的功能,而不是在编译项目时检测错误。这为开发团队创建了一个更高效的编码和调试过程
- 更强的生产力:干净的 ECMAScript 6 代码,自动完成和动态输入等因素有助于提高开发人员的工作效率。这些功能也有助于编译器创建优化的代码
- 除了静态类型的定义和检查外,TypeScript 还引入了类、接口、模块、装饰器、命名空间等特性(ES6中也实现了部分)
- TypeScript 是添加了类型系统的 JavaScript,适用于任何规模的项目,增加了代码的可读性和可维护性
- TypeScript 是一门静态类型、弱类型的语言,它是完全兼容 JavaScript 的,它不会修改 JavaScript 运行时的特性
- TypeScript 增强了编辑器(IDE)的功能,提供了代码补全、接口提示、跳转到定义、代码重构等能力
2、JS
- 本地浏览器支持,不需要被编译,可以直接运行,但是TS需要被编译为javascript语言
- 人气:在社区中很方便地找到大量成熟的开发项目和可用资源
- 灵活性