TypeScript学习

参考链接:

这是一篇带你快速入门的TS教程 - 掘金

ts保姆级教程,别再说你不会ts了 - 掘金

一份不可多得的 TS 学习指南(1.8W字) - 掘金

新增基础类型

  • 任意类型any:可以赋予任意类型的值。
  • 元组类型Tuple:元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同对应位置的类型需要相同
  • 枚举类型enum:定义数值集合。包括数字枚举和字符串枚举。(存在映射关系

数字枚举默认从0开始,也可以修改默认情况

字符串枚举:字符串的枚举不会自增,枚举的每个成员都必须要有初始值

  •  void:用于标识方法返回值的类型,表示该方法没有返回值。
  • never:never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。即声明为 never 类型的变量只能被 never 类型所赋值,在函数中它通常表现为抛出异常或无法执行到终止点(例如无限循环)

类型断言

类型断言可以用来手动指定一个值的类型,即允许变量从一种类型更改为另一种类型。

  • 尖括号

  • as语法

非空断言

在上下文中当类型检查器无法断定类型时,一个新的后缀表达式操作符 ! 可以用于断言操作对象是非 null 和非 undefined 类型。具体而言,x! 将从 x 值域中排除 null 和 undefined!

确定赋值断言

在实例属性和变量声明后面放置一个 ! 号,从而告诉 TypeScript 该属性会被明确地赋值。

 注意:TS总是需要指定值类型,比如变量声明,又比如函数在声明时指定返回值类型,再比如函数参数需要指定类型。

类型注解

就是给变量添加类型约束。

联合类型

可以定一个类型可以是类型1也可以是类型2。用 | 来表示。

上述就表示arr1既可以是number类型也可以是string类型。

交叉类型

通过 & 运算符可以将现有的多种类型叠加到一起成为一种类型,它包含了所需的所有类型的特性。

在上面代码中我们先定义了 PartialPointX 类型,接着使用 & 运算符创建一个新的 Point 类型,表示一个含有 x 和 y 坐标的点,然后定义了一个 Point 类型的变量并初始化。

类型别名 

给类型起别名

给复杂类型起别名

类型守卫

类型守卫是可执行运行时检查的一种表达式,用于确保该类型在一定的范围内。

in、typeof、instanceof可以检测类型。

当不知道一个数据的类型,并且需要将其作为依赖操作的时候,可 以使用 typeof 操作

in 关键字用来判断之是否属于某个值域中 

数组类型

两种定义方式:

其中类型也可以写成联合类型的形式。

可选参数

参数为可选,可选参数使用问号标识 ?

 函数重载

重载是方法名字相同,而参数不同,返回类型可以相同也可以不同。

每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。

这是因为函数重载是指为同一个函数提供多个函数类型,它的意义在于让你清晰的知道 传入不同的参数得到不同的结果。如果不是这种情况, 那就不需要使用函数重载。(有种catch匹配对应给出对应结果的感觉)

对象类型

单独使用、类型别名与接口可定义

单独使用(const 对象名 :{}):属性就注解方式声明,方法可以是普通函数也可以是箭头函数。函数也需要声明返回值类型,没有返回值则是void

 

 类型别名(type 对象名={})

 接口

 接口与类型别名区别

  • 接口和类型别名都可以用来描述对象的形状或函数签名
  • 与接口类型不一样,类型别名可以用于一些其他类型,比如原始类型、联合类型和元组。但是接口只能服务于对象
  • 接口和类型别名都能够被扩展,但语法有所不同。此外,接口和类型别名不是互斥的。接口可以扩展类型别名,而反过来是不行的。
  • 与类型别名不同,接口可以定义多次,会被自动合并为单个接口。
  • 类可以以相同的方式实现接口或类型别名,但类不能实现使用类型别名定义的联合类型

 泛型

泛型就是解决 类 接口 方法的复用性、以及对不特定数据类型的支持

泛型函数

因为<number>指定getData函数为Number类型,根据原来的泛型函数可以看出传值应该传Number类型。

 泛型类

 类中方法min是设置为了泛型,因此我们可以定义是加Number类型还是 String类型。

泛型接口

 泛型工具

typeof 用来获取一个变量的类型

keyof 用来获取某种类型的所有键,其返回类型是联合类型。

extends 有时候我们定义的泛型不想过于灵活或者说想继承某些类等,可以通过 extends 关键字添加泛型约束。

Partial 用于定义一个类型,该类型中的所有成员都是可选的。Partial<T> 的作用就是将某个类型里的属性全部变为可选项 ?

Pick 可以配合联合类型从一个类型中取出部分成员,形成一个新的类型

 注意构造函数的写法以及类的继承中,扩写父方法时需要super调用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值