[ TypeScript 基础 | 青训营笔记]

70 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 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的基础语法,需要配合一定的代码实践加深印象。