TypeScript入门 | 青训营笔记

66 阅读2分钟

这是我参加[第五届青训营]伴学笔记创作第六天

一、本堂课的重点

  • 初识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 对象类型

其分为了三种属性:

  1. 只读属性:约束属性不可在对象初始化外赋值,也就是说只能看,不能引用。
  2. 可选属性:定义该属性可以不存在,也就是说那个变量可有可无。例如:hobby?:string;标志性符号?
  3. 任意属性:约束所有对象属性都必须是该属性的子类型。例如:[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中补充的类型
  1. 空类型: type IEmptyFunction = () => void;
  2. 任意类型:上面有提到任意属性,跟那个差不多,是所有类型的 子类型
  3. 枚举类型:支持枚举值到枚举名的正、反向映射
  4. 泛型:上文有提及数组泛型表示,就是不先指定具体类型,在使用的时候在指定特定的类型

四、高级数据类型

4.1 联合/交叉类型
  • 联合类型:|A | |B;联合类型表示一个值可以是几种类型之一,“或”
  • 交叉类型:|A & |B;多种类型叠加到一起成为一种类型,它可以包含所需的所有类型的特性,“且”
4.2 类型保护与类型守卫

QQ截图20230120154134.png