Typescript学习

本文介绍了TypeScript中的基本类型概念,包括联合类型用于表示取值可为多种类型之一,交叉类型用于合并接口,类型别名提供类型重命名,函数类型关注参数和返回值的类型定义,void和never类型分别表示无返回和不可能的值,元组用于固定长度和类型的数据,枚举提供命名常量,any类型允许任何值,但不推荐过度使用,unknown更安全,类型断言则用于特殊情况下的类型强制转换,非空断言排除null和undefined。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.联合类型

联合类型表示取值可以为多种类型中的一种,使用 | 分隔每个类型。

在这里插入图片描述

2.交叉类型

交叉类型真正的用武之地就是将多个接口类型合并成一个类型,从而实现等同接口继承的效果,也就是所谓的合并接口类型,如下代码所示:
在这里插入图片描述
在上述示例中,我们通过交叉类型,使得 IntersectionType 同时拥有了 id、name、age 所有属性,这里我们可以试着将合并接口类型理解为求并集。

3.类型别名(创建类型)

  • 类型别名(自定义类型)`:类型别名用来给一个类型起个新名字。(类型别名常用于联合类型。)
  • 使用场景:当同一类型(复杂)被多次使用时,可以通过类型别名,简化该类型的使用
    在这里插入图片描述
  • 解释:
    1. 使用 type 关键字来创建自定义类型
    2. 类型别名(比如,此处的 CustomArray)可以是任意合法的变量名称
    3. 推荐使用大写字母开头
    4. 创建类型别名后,直接使用该类型别名作为变量的类型注解即可

注意:类型别名,诚如其名,即我们仅仅是给类型取了一个新的名字,并不是创建了一个新的类型。

4.函数类型(返回值和参数类型)

1.单独指定参数、返回值的类型:

在这里插入图片描述

2.同时指定参数、返回值的类型:

在这里插入图片描述

3.void类型

值得注意的是,方法没有返回值将得到undefined,但是我们需要定义成void类型,而不是undefined类型。否则将报错:
在这里插入图片描述

4.never类型(函数异常或者死循环)

  • void 用来表示空,以函数为例,就表示没有返回值的函数
  • never 类型表示的是那些永不存在的值的类型。

值会永不存在的两种情况:

  1. 如果一个函数执行时抛出了异常,那么这个函数永远不存在返回值(因为抛出异常会直接中断程序运行,这使得程序运行不到返回值那一步,即具有不可达的终点,也就永不存在返回了);
  2. 函数中执行无限循环的代码(死循环),使得程序永远无法运行到函数返回值那一步,永不存在返回。

在这里插入图片描述
never类型同nullundefined一样,也是任何类型的子类型,也可以赋值给任何类型。

但是没有类型是never的子类型或可以赋值给never类型(除了never本身之外),即使any也不可以赋值给never

5.可选参数?

可选参数只能出现在参数的最后。

在这里插入图片描述

5.元祖类型

元组类型是另一种类型的数组,它确切地知道包含多少个元素,以及特定索引对应的类型(元祖用于保存定长定数据类型的数据)

在这里插入图片描述

1.只读的元祖类型

在这里插入图片描述

5.枚举类型

在这里插入图片描述

6.any

在 TypeScript 中,任何类型都可以被归为 any 类型。这让 any 类型成为了类型系统的顶级类型.

  • 原则:不推荐使用 any!这会让 TypeScript 变为 “AnyScript”(失去 TS 类型保护的优势)
  • 一个变量设置类型为any后相当于对该变量关闭了TS的类型检测
  • 当值的类型为 any 时,可以对该值进行任意操作,并且不会有代码提示
    在这里插入图片描述

7.unkown

unknownany的最大区别是: 任何类型的值可以赋值给any,同时any类型的值也可以赋值给任何类型。unknown 任何类型的值都可以赋值给它,但它只能赋值给unknownany。看看下面这个例子:

在这里插入图片描述

8.类型断言

在 TypeScript 看来,greaterThan2 的类型既可能是数字,也可能是 undefined,所以上面的示例中提示了一个 ts(2322) 错误,此时我们不能把类型 undefined 分配给类型 number。

不过,我们可以使用一种笃定的方式——类型断言(类似仅作用在类型层面的强制类型转换)告诉 TypeScript 按照我们的方式做类型检查。

在这里插入图片描述

1.非空断言

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

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值