这是我参与「第五届青训营 」伴学笔记创作活动的第4天
什么是TypeScript?
TypeScript发展史
- 2012-10: 微软发布了 TypeScript 第一个版本 (0.8)
- 2014-10: Angular 发布了基于 TypeScript 的 2.0 版本
- 2015-04: 微软发布了 Visual Studio Code
- 2016-05: @types/react 发布,TypeScript 可开发 React
- 2020-09: Vue 发布了 3.0 版本,官方支持 TypeScript
- 2021-11: v4.5版本发布
JS与TS的对比
| JS | TS |
|---|---|
| 动态类型 | 静态类型 |
| 弱类型语言 | 弱类型语言 |
静态类型
- 可读性增强:基于语法解析TSDoc,ide增强
- 可维护性增强:在编译阶段暴露大部分错误
- 多人合作的大型项目中,获得更好的稳定性和开发效率
JS的超集
- 包含于兼容所有Js特性,支持共存
- 支持渐进式引入与升级
TypeScript基本语法
1、基础数据类型
基本数据类型:包括字符串、数字、布尔、null、undefined等。
const q:string = 'string'
const w:number = 1
const e:boolean = true
const r:null = null
const t:undefined = undefined
2、对象类型
对象是包含一组键值对的实例。 值可以是标量、函数、数组、对象等
| 只读属性 | 任意属性 | 可选属性 |
|---|---|---|
在 TypeScript 中,我们可以将属性标记为 readonly,表示这是一个只读属性 | 如果是一个普通类型,在赋值过程中改变类型是不被允许的 | 接口里的属性不全都是必需的。 有些是只在某些条件下存在,或者根本不存在。 例如给函数传入的参数对象中只有部分属性赋值了。 |
3、函数类型
函数是一组一起执行一个任务的语句。您可以把代码划分到不同的函数中。如何划分代码到不同的函数中是由您来决定的,但在逻辑上,划分通常是根据每个函数执行一个特定的任务来进行的。函数声明告诉编译器函数的名称、返回类型和参数。函数定义提供了函数的实际主体。
(1)直接定义函数类型
函数类型的定义包括对参数和返回值的类型定义:
function add(arg1: number, arg2: number): number {
return x + y;
}
const add = (arg1: number, arg2: number): number => {
return x + y;
};
(2)接口定义函数类型
使用接口可以清晰地定义函数类型。下面来使用接口为add函数定义函数类型:
interface Add {
(x: number, y: number): number;
}
const mult:IMult=(x,y)=>x*y;
(3)类型别名定义函数类型
可以使用类型别名来定义函数类型,这种形式更加直观易读:
type Add = (x: number, y: number) :number{
return x+y;
}
const mult: (x: number, y: number) => number = (x, y) => x * y;
4、函数重载
这个概念是在一些强类型语言中才有的,在JS中依据不同参数类型或参数个数执行一些不同函数体的实现很常见,依托于TypeScript,就会有需要用到这种声明的地方。
关于函数重载,必须要把精确的定义放在前面,最后函数实现时,需要使用 |操作符或者?操作符,把所有可能的输入类型全部包含进去,以具体实现。
TS的高级类型
1、联合和交叉类型
联合类型:IA|IB; 联合类型表示一个值可以是几种类型之一。
交叉类型:IA &BI;多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性。
const bookList [
author:'xiaoming',
type:'history',
range:'2001-2021',
},{
author:'xiaoli',
type:'story',
theme:'love',
}]
type IBookList Array<{
author:string;
}&({
type:'history';
range:string;
}|{
type:'story";
theme:string;
})>
2、类型保护与类型守卫
类型守卫:定义一个函数,它的返回值是一个类型谓词,生效范围为子作用域。
联合类型十类型保护=自动类型推断;
Typescript工程应用-Web
1.安装Node与npm
2.配置tsconfig.js文件
3.使用npm安装tsc
4.使用tsc运行编译得到s文件
总结
TS增加了代码的可读性和可维护性,可以在编译时进行报错。提前发现错误,减少改BUG时间,即使编译报错也可以默认生成JS文件。