TypeScript

58 阅读2分钟

TypeScript与JavaScript区别

TypeScriptJavaScript
JavaScript的超集,用于解决大型项目的代码复杂性一种脚本语言,用于创建动态网页
强类型,支持静态和动态类型动态弱类型语言
可以在编译期间发现并纠正错误只能运行时发现错误
不允许改变变量的数据类型变量可以被赋值成不同类型

TS基础

1.基础类型

(1)boolean、number、string

(2)undefined、null

(3)any、unknow、void

(4)never

(5)数组类型[]

(6)元素类型tuple

2.函数类型

(1)定义:TS定义函数类型时要定义输入参数类型和输出类型

(2)输入参数:参数支持可选参数和默认值

(3)输出参数:输出可以自动推断,没有返回值时,默认为void类型

(4)函数重载:名称相同但参数不同,可以通过重载支持更多类型

3.interface

(1)定义:接口是为了定义对象类型

(2)特点:

1)可选属性:?

2)只读属性:readonly

3)可以描述函数类型

4)可以描述自定义类型

(3)总结:接口非常灵活duck typing

4.类

(1)定义:写法和JS差不多,增加了一些定义

(2)特点:

1)增加了public、private修饰符

2)抽象类:

·只能被继承,不能被实例化

·作为基类,抽象方法必须被子类实现

TS进阶

1.高级类型

(1)联合类型|

(2)交叉类型&

(3)类型断言

(4)类型别名

1)定义:给类型起个别名

2)相同点:

1.都可以定义对象或函数

2.都允许继承

3)差异点

1.interface是TS用来定义对象,type是用来定义别名方便使用

2.type可以定义基本类型,interface不行

3.interface可以合并重复声明,type不行

2.泛型-基本使用

(1)泛型的语法是<>里面写参数,一般用T表示

(2)使用时有两种方式指定类型

1)定义要使用的类型

2)通过TS类型推断,自动推导类型

(3)泛型的作用是临时占位,之后通过传来的类型进行推导

3.基本操作符

(1)typeof:获取类型

(2)keyof:获取所有键

(3)in:遍历枚举类型

(4)T[K]:索引访问

(5)extend:泛型约束

4.常用工具类型

(1)Partial:将类型属性变为可选

(2)Required:将类型属性变为必选

(3)Readonly:将类型属性变为只读

(4)Pick、Record

5.声明文件

(1)declare:三方库需要类型声明文件

(2).d.ts:声明文件定义

(3)@types:三方库TS类型包

(4)tsconfig.json:定义TS的配置