这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
一、TypeScript简介
TypeScript 是 JavaScript 的语法超集,它添加了静态类型,近几年的发展中,也受到诸多开发者的喜爱。Typescript 的社区逐渐壮大,日趋完善,为越来越多前端开发者提供服务。 JS是动态类型、弱类型语言,在代码执行时才进行类型判断; TS是静态类型、弱类型语言,在代码执行前编译、进行类型判断。
二、TS优势
静态类型
1、可读性增强:基于语法解析TSDoc,ide增强
2、可维护性增强:在编译阶段暴露大部分错误
3、多人合作的大型项目中,获得更好的稳定性和开发效率
JS超集
4、包含于兼容所有JS特性,支持共存
5、支持渐进式引入与升级
三、基本语法
1、基础数据类型,在定义的变量后加上“:变量类型”
(1)字符串 const q: string = '';
(2)数字 const w: number = 1;
(3)布尔值 const e: boolean = true;
(4)null const r: null = null;
(5)undefiend const t:undefiend = undefiend;
2、对象类型,interface操作符自定义对象类型(以“I”开头)
(1)只读属性 在属性前添加 readonly
(2)可选属性 在属性后添加 ?
(3)任意属性 约束所有对象属性都必须是该属性的子类型 [key:string]:any;
*除了(2)以外的属性都是不可缺的
3、函数类型
参数类型,在参数后加上 :类型
函数声明返回值类型,在函数声明右括号后加上 :类型
4、自定义数组类型
(1)类型[] type IArr1 = number[];
(2)泛型表示 type IArr2 = Array<string | number | Record<string,number>>
*Record<string,number>为对象类型简化写法
(3)元祖表示 type IArr3 = [number, number, string, string]
(4)接口表示 interface IArr4 { [key: number]: any; }
TS补充类型
5、空类型,表示无赋值 type IEmptyFunction = () => void;
6、任意类型 type IAnyType = any;
7、枚举类型:支持枚举值到枚举名的正、反向映射。 enum EnumExample { add = '+', mult = '*' } EnumExample['add'] === '+'; EnumExample['+'] === 'add'
8、泛型:不预先指定具体的类型,而在使用的时候再指定类型的一种特性;
(1)泛型函数 type IGetReader = (target: T) => T[];
(2)泛型接口&多泛型 interface IX<T, U> { key: T; val: U; }
(3)泛型类 class IMan { instance: T; }
(4)泛型别名 type ITypeA = Array
*泛型约束extends,限制泛型必须符合 XX类型 type IMake = (target: T) => T[]; **泛型参数默认类型 = type IMake = <T = string>(target: T) => T[];
*类型别名type Ixx = Array<{key:string;[a:string]:any}>
*类型断言as ,断言某变量类型为正确类型 *对象简化写法:Record<string, number>,键为字符串,值为数字 *字符串、数字字面量 | type Iab = 1 | 2 | 4| 5,必须为所列出的数字之一
*构造类型时,当需要特定功能时使用 type 。
四、总结
通过本次课程,我掌握了TypeScript的基础语法,需要配合一定的代码实践加深印象。