TypeScript 基础

type
status
date
category
slug
summary
tags
icon
password

1. 原始数据类型

  • Boolean
  • number
  • string
  • undefined
  • null
  • any

2. 数组和元祖

元祖:本质上其实就是数组,不过跟数组不一样的就是可以单独限制数组中的每个数据类型

3. interface接口

  • 通过interface关键字定义接口
  • 属性前添加readonly表示只读属性
  • 属性后加?问号表示可选属性

4. 类型推论、联合类型、类型断言

类型推论

变量不需要声明类型,根据赋值自定推论出变量类型

联合类型

联合类型就是可以指定多个类型

类型断言

当变量不确定是什么类型,但是我们知道会是什么类型时,可以断言为某种具体类型

通过as关键字断言

隐式断言

不需要主动断言,ts会根据代码逻辑自动断言出类型

5. 枚举enums

枚举就是固定的几个值,比如每周的工作日,红绿灯的颜色。
类似数组,默认索引是从0开始的数字,索引可以修改。

枚举

编译后的js代码

常量枚举

在enum前面加一个const就可以变为常量枚举
常量枚举编译后的js代码量少,因为编译成了对应的值,没有枚举创建的过程了。
编译后的js代码

6. 泛型

定义函数、接口和类的时候不指定类型,使用的时候再定义类型
定义的时候先创建泛型名称,使用泛型代替类型,也就是泛型代指某一种具体类型。

泛型-第一部分:定义泛型

定义函数、接口和类的时候,在名称后面加上< >来定义泛型,< >里面加上泛型的名称
  • <T> 创建了一个名称为T的泛型,T到底是什么类型不知道,可能是任何一种,具体是什么要看使用时传入的类型。
  • arg: T 使用泛型T作为入参的类型
  • 将泛型T作为函数返回值

定义多个泛型

泛型-第二部分:约束泛型

通过泛型约束传入的参数中必须包含某个属性,通过添加extends关键字约束泛型。
上面的函数中会报一个警告:类型“T”上不存在属性“length”。
如果泛型T是string或者array没问题,因为本身就有length,但如果是number就会报错,因为number没有length属性。因为ts不知道泛型T会是什么类型,所以也就不知道arg上面会不会有length属性。
如果使用泛型约束就可以很好的解决上面得问题,因为可以约束泛型T必须包含length属性。
通过extends关键字约束泛型

泛型-第三部分:泛型在类和接口中的使用

在类中的使用
在接口中的使用
通过泛型创建数组

7. 类型别名、字面量、交叉类型

类型别名

有些类型名称比较长,就是给类型起一个别的名称
如果多个函数都是这样的类型就需要写很多次,可以给这个类型定义一个别名使用

字面量

创建固定值的类型,自己创建一个类型,这个类型是固定的值,可以是多个值。
字面量的使用

交叉类型

对某个类型进行扩展组合成为新的类型
类和接口的交叉类型
type和interface的区别
  • type是某个类型的别名,当类型的名称太长或想起另一个名称时使用
  • interface是一个标准的类型接口

8. 内置类型

global objects(全局对象)
build-in object(内置对象)
Dom and Bom(DOM和BOM标准对象类型
Utility Types(功能性类型)
Partial:把传入的类型都变成可选类型
Omit: 忽略传入的某个属性
更多Utility Types类型请查看ts官网:
 
Prev
解决node上传文件乱码问题终极方案
Next
钝感力,是生活最好的解药
Loading...