这是我参加[第五届青训营]伴学笔记创作第六天
一、本堂课的重点
- 初识typescript
- typescript重要的数据类型
二、初识
2.1 什么是typescript?
TypeScript的发展历程:2012年10月,微软公司发布了typescript第一个版本,2014年10月,Angular发布第二个版本,后来react,vue官方相继支持typescript版本的开发。
2.2 与JavaScript(js)相比TypeScript(ts)有什么优势?
众所都知,JavaScript是一门动态语音,是弱语音。TypeScript也是一个弱语音,但是是静态语音。两者最大的区别就是静态语言具有更强的可读性,可以在编译的过程中发现语法错误,更加稳定。
三、基本的语法
3.1 数据类型
相比于js,写ts代码最大的特点就是要说明他的数据类型是什么。
例如:
//typescript
const hello : string = "hello, world!";//这个地方在变量后面加了冒号,并且指明了数据类型
console.log(hello);
//javascript
const hello = 'hello, world!';
console.log(hello);
其他的数据类型也是如此,比如说,布尔型const e : boolean = "ture";这些数据类型都要指明其类型。
3.2 对象类型
其分为了三种属性:
- 只读属性:约束属性不可在对象初始化外赋值,也就是说只能看,不能引用。
- 可选属性:定义该属性可以不存在,也就是说那个变量可有可无。例如:
hobby?:string;标志性符号? - 任意属性:约束所有对象属性都必须是该属性的子类型。例如:
[Key: string]: any;是这样的语法格式。
3.3 数组类型
//类型 + 方括号 表示
type IArr1 = number[];
//泛型表示,这个是ts补充的类型
type IArr2 = Array<string | number | Record<string, number>>;
//元祖表示
type IArr3 = [number, number, string, string];
//接口表示
interface IArr4 {
[Key: number]: any;
}
//例如:
const arr: IArr1 = [1, 2, 3, 4, 5];
3.4 ts中补充的类型
- 空类型:
type IEmptyFunction = () => void; - 任意类型:上面有提到任意属性,跟那个差不多,是所有类型的 子类型
- 枚举类型:支持枚举值到枚举名的正、反向映射
- 泛型:上文有提及数组泛型表示,就是不先指定具体类型,在使用的时候在指定特定的类型
四、高级数据类型
4.1 联合/交叉类型
- 联合类型:|A | |B;联合类型表示一个值可以是几种类型之一,“或”
- 交叉类型:|A & |B;多种类型叠加到一起成为一种类型,它可以包含所需的所有类型的特性,“且”