TypeScript 是 JavaScript 的一个超集,它添加了静态类型定义以及其他功能,使代码更加健壮和可维护。以下是 TypeScript 中的一些主要类型:

  1. 基础类型
  • boolean:布尔值,truefalse
  • number:数字,可以是整数或浮点数。
  • string:文本类型。
  • symbol:唯一的标识符,通常用于对象的属性名。
  • nullundefined:分别表示空值和未定义的值。注意,nullundefined 是各自独特的类型,并不是 numberstring 的子类型。
  • void:表示没有任何类型。通常用于表示不返回任何值的函数的返回类型。
  1. 数组和元组
  • Array<T>T[]:表示一个元素类型为 T 的数组。
  • [T, U, ...](元组):表示一个固定长度的数组,其中每个位置上的元素类型都是已知的。
  1. 枚举(Enum)
  • 枚举类型允许你定义一组命名的常量。使用 enum 关键字来定义枚举类型。
  1. 对象类型
  • 对象类型可以包括一组属性,每个属性都有特定的类型。
  • 可以通过接口(interface)或类型别名(type)来定义对象类型。
  1. 接口(Interface)
  • 接口是一种定义对象形状的方式,它可以定义一组属性、方法或函数的签名。
  • 接口也可以被类实现,以确保类具有特定的结构。
  1. 函数类型
  • 函数类型可以定义函数的参数和返回值的类型。
  • 也可以定义函数的可选参数、剩余参数等。
  1. 类类型
  • TypeScript 支持基于类的面向对象编程,你可以定义类并创建类的实例。
  • 类的属性和方法可以有特定的类型。
  1. 泛型(Generics)
  • 泛型允许你定义灵活、可重用的组件,这些组件可以处理多种类型的数据。
  • 泛型通常用 TUV 等作为类型参数,并在函数、接口或类中使用它们。
  1. 交叉类型(Intersection Types)
  • 交叉类型是将多个类型合并为一个类型。这允许你合并已有的类型来创建一个具有多个类型所有特性的新类型。
  1. 联合类型(Union Types)
  • 联合类型表示一个值可以是几种类型之一。联合类型使用 | 分隔每个类型。
  1. 类型别名(Type Aliases)
  • 类型别名是给一个类型起一个新的名字。类型别名有时和接口很相似,但是可以作用于原始类型、联合类型、交叉类型或字面量类型等。
  1. 字面量类型(Literal Types)
  • 字面量类型允许你指定变量只能是特定的值。比如,字符串字面量类型允许你指定字符串必须的固定值。
  1. 索引签名(Index Signatures)
  • 索引签名用于描述对象索引的类型。
  1. 映射类型(Mapped Types)
  • 映射类型是在一个对象类型上通过类型运算创建新的对象类型。
  1. 条件类型(Conditional Types)
  • 条件类型根据条件返回不同的类型。它们与 JavaScript 中的三元条件运算符类似,但在类型级别上工作。
  1. 类型推断(Type Inference)
  • TypeScript 会自动推断出变量的类型,如果你没有显式指定的话。
  1. 非空断言操作符(Non-Null Assertion Operator)
  • 使用 ! 非空断言操作符可以告诉 TypeScript 某个变量不可能是 nullundefined
  1. 类型保护(Type Guards)
  • 类型保护是一种表达式,它们执行一些运行时检查并缩小类型范围。

这些类型使得 TypeScript 在静态类型检查和编译时能够提供更丰富的错误信息,帮助开发者在编写代码时捕获错误,并构建更加健壮和可维护的应用程序。