这篇文章给大家介绍TS的相关内容,首先需要了解什么是TS
TS可以理解为是JavaScript的超集,它是由微软公司开发的一种编程语言,可以运行在任何浏览器还有操作系统
以下是TS的安装获取方式 npm i -g typescript
TS有如下特点:优点
1)灵活:可以将代码自动转换为js代码
2)兼容性强: 可以在任何浏览器和操作系统运行,并不需要浏览器的支持,通过node.js运行即可
3)方便维护: 在TS中的报错在编译时就能发现,不会直接显示到用户页面
缺点
1)不利于前端工程师上手,需要理解接口,枚举等类型的概念
2)需要多写一些类型的定义
3)工作量大,和一些库不能完美结合
TypeScript和JavaScript有以下区别区别
TS
- JS的超集,用于解决大型项目的代码复杂性
- 强类型,支持静态和动态类型
- 可以在编译期间发现并纠正错误
- 不允许改变变量的数据类型
Js
- 一种脚本语言,用于创建动态网页
- 动态弱类型语言
- 只能在运行时发现错误
- 变量可以被赋值为不同类型
TS与JS相比有以下改良:
- 类型安全
- 下一代JS特性
- 完善的工具链
TS基础(类型)
- Boolean,number,string
- Undefined,null
- any,unknown,void
- never
- 数组类型【】
- 元组类型tuple
TS基础(函数类型)
定义:TS定义函数类型时要定义输入参数类型和输出类型
输入参数:参数支持可选参数和默认参数
输出参数:输出可以自动推断,没有返回值时,默认为void类型
函数重载:名称相同但参数不同,可以通过重载支持多种类型
TS基础(interface)
定义:接口是为了定义对象类型
特点
- 可选属性:?
- 只读属性:readonly
- 可以描述函数类型
- 可以描述自定义属
总结:接口非常灵活duck typing
TS基础(类)
定义:写法和JS差不多,增加一些定义
特点
- 增加了public,private,protected修饰符
- 抽象类:只能被继承,不能被实例化;作为基类,抽象方法必须被子类实现;interface约束类,使用 implements关键字
TS适用于任何规模
TypeScript 非常适用于大型项目——这是显而易见的,类型系统可以为大型项目带来更高的可维护性,以及更少的 bug。
在中小型项目中推行 TypeScript 的最大障碍就是认为使用 TypeScript 需要写额外的代码,降低开发效率。但事实上,由于有类型推论,大部分类型都不需要手动声明了。相反,TypeScript 增强了编辑器(IDE)的功能,包括代码补全、接口提示、跳转到定义、代码重构等,这在很大程度上提高了开发效率。而且 TypeScript 有近百个编译选项,如果你认为类型检查过于严格,那么可以通过修改编译选项来降低类型检查的标准。
TypeScript 还可以和 JavaScript 共存。这意味着如果你有一个使用 JavaScript 开发的旧项目,又想使用 TypeScript 的特性,那么你不需要急着把整个项目都迁移到 TypeScript,你可以使用 TypeScript 编写新文件,然后在后续更迭中逐步迁移旧文件。如果一些 JavaScript 文件的迁移成本太高,TypeScript 也提供了一个方案,可以让你在不修改 JavaScript 文件的前提下,编写一个类型声明文件,实现旧项目的渐进式迁移。
事实上,就算你从来没学习过 TypeScript,你也可能已经在不知不觉中使用到了 TypeScript——在 VSCode 编辑器中编写 JavaScript 时,代码补全和接口提示等功能就是通过 TypeScript Language Service 实现的:
一些第三方库原生支持了 TypeScript,在使用时就能获得代码补全了,比如 Vue 3.0
有一些第三方库原生不支持 TypeScript,但是可以通过安装社区维护的类型声明库(比如通过运行 npm install --save-dev @types/react 来安装 React 的类型声明库)来获得代码补全能力——不管是在 JavaScript 项目中还是在 TypeScript 中项目中都是支持的:
由此可见,TypeScript 的发展已经深入到前端社区的方方面面了,任何规模的项目都或多或少得到了 TypeScript 的支持。
TS进阶(高级类型)
- 联合类型l
- 交叉类型&
- 类型断言
- 类型别名(typeVS interface)
相同点:都可以定义对象或函数;都允许继承
差异点:interface是TS用来定义对象,type是用来定义别名方便使用; type可以定义基本类型,interface不行; interface可以合并重复声明,type不行
TS进阶-泛型-基本使用
定义
- 泛型的语法是<>里面写类型参数,一般用T表示
- 使用时有两种方法指定类型:定义要使用的类型;通过TS类型推断,自动推导类型
- 泛型的作用是临时占位,之后通过传来的类型进行推导
TS进阶-泛型工具类型-基础操作符
typeof:获取类型
keyof:获取所有键
in:遍历枚举类型
T【K】:索引访问
extends:泛型约束
TS进阶-泛型工具类型-常用工具类型
- Partial:将类型属性变为可选
- required:将类型属性变为必选
- Readonly :将类型属性变为只读
- Pick,Record
TS实战-声明文件
- declare:三方库需要类型声明文件
- •d.ts:声明文件定义
- @types:三方库TS类型包
- tsconfig.json:定义TS的配置
以下几点可以帮新手入门TS
一:学习ts的声明变量类型,能够初步编写强类型代码;学习ts的接口,进一步强定义对象的丰富属性;
二:学习ts的函数声明和实现定义,强类型化ts函数;
三:灵活面对类型转换,类型报错,类型文件的声明和引入,灵活编写强类型代码。
四:学习ts的类型断言(解释型类型转换)
五:学习ts的泛型,更灵活的面对多可能性类型参数
当然,最重要的还是要在实践中多加练习,唯有实践才能发现自己的不足,加油!