TypeScript - 类型



类型系统表示语言支持的不同值类型。类型系统会在程序存储或操作值之前检查值的有效性。这确保了代码按预期运行。类型系统还可以提供更丰富的代码提示和自动文档。

TypeScript 提供数据类型作为其可选类型系统的一部分。数据类型的分类如下所示:

Data Types

any 类型

any 数据类型是 TypeScript 中所有类型的超类型。它表示动态类型。使用 any 类型等同于选择不为变量进行类型检查。

内置类型

下表列出了 TypeScript 中所有内置类型:

数据类型 关键字 描述
数字 number 双精度 64 位浮点数。它可以用来表示整数和小数。
字符串 string 表示 Unicode 字符序列
布尔值 boolean 表示逻辑值,true 和 false
空值 void 用于函数返回类型,表示不返回函数值的函数
null 表示对象值的故意缺失。
未定义 undefined 表示赋予所有未初始化变量的值
Symbol symbol ES2015 中引入的唯一且不可变的基元。
对象 object 表示用户定义类的实例、数组、函数等。
永不存在 never 表示永远不会出现的值。
TypeScript 和 JavaScript 中没有整数类型。

现在,让我们详细了解每种内置数据类型。

数字

在 TypeScript 中,number 数据类型可以存储整数、浮点数、二进制数、十进制数、十六进制数等。但是,所有整数在 TypeScript 中都表示为浮点数。

示例

在下面的代码中,agemarks 两个变量都是 number 类型。age 变量包含整数,marks 变量包含浮点数。

// Integer number
let age: number = 30;
// Float number
let marks: number = 30.5;

字符串

string 数据类型用于存储文本值。

您可以通过三种方式定义字符串

  • 使用单引号

  • 使用双引号

  • 使用反引号

反引号用于创建多行字符串或模板字符串。

示例

在下面的代码中,first_name 字符串使用单引号创建,last_name 字符串使用双引号创建。full_name 字符串使用反引号创建,它使用模板字面量创建字符串。

let first_name: string = 'John';
let last_name: string = "Doe";
let full_name: string = `${first_name} ${last_name}`;

布尔值

在 TypeScript 中,布尔数据类型允许您表示逻辑实体。它存储 truefalse 值。布尔变量主要用于 if-else 或 switch 等条件语句,根据某些逻辑值执行流程。

示例

在下面的代码中,isReady 是布尔类型的变量,它包含 true 值。

let isReady: boolean = true;

Symbol

symbol 是一种基元数据类型,主要用于创建唯一值。它允许开发者创建不会与任何其他键冲突的唯一对象键。

示例

在这里,我们使用了 Symbol() 构造函数,它返回新的唯一键。我们使用 UNIQUE_KEY 作为 obj 对象的键。

// Define a symbol
const UNIQUE_KEY = Symbol(); 
// Use the symbol as a property key in an object
let obj = {
[UNIQUE_KEY]: "SecretValue"
};

TypeScript 中的 null 类型表示对象值的故意缺失。它是基元类型之一,通常用于指示变量故意不指向任何对象。

示例

在下面的代码中,empty 变量包含 null 值。

let empty: null = null;

未定义

undefined 数据类型表示值的缺失。当声明变量但未初始化时,它包含 undefined 值。

示例

在下面的代码中,undef 变量包含 undefined 值。

let undef: undefined;

Null 和 undefined ——它们一样吗?

nullundefined 数据类型常常令人困惑。null 和 undefined 不能用于引用变量的数据类型。它们只能作为值赋给变量。

但是,null 和 undefined 不相同。用 undefined 初始化的变量表示该变量没有值或对象分配给它,而 null 表示该变量已设置为值为 undefined 的对象。

对象

object 是一种非基元数据类型,可以包含任何不是数字、字符串、布尔值、symbol、null 或 undefined 的值。您可以使用对象字面量或 Object() 构造函数创建对象。

示例

在下面的代码中,我们使用对象字面量创建了对象。person 变量的类型是一个对象。我们在花括号(对象字面量)之间添加了键值对。

let person: object = {name: "Bob"};

空值

void 类型用于不返回值的函数的返回类型。它表示根本没有类型。

示例

在这里,我们使用 void 数据类型与函数一起使用,以便函数不返回值。

function log(): void {
console.log("log");
}

用户定义类型

用户定义类型包括枚举 (enum)、类、接口、数组和元组。这些将在后面的章节中详细讨论。

数组

数组数据类型是相同元素的集合。它存储元素,您可以使用从 0 开始的数组索引访问或更新这些元素。

任何数据类型的数组可以定义为 data_type[]Array<data_type>,其中 <data_type> 可以是任何基元或非基元数据类型。

示例

在下面的代码中,我们定义了一个只包含 3 个元素的数字数组。1 的索引是 0,2 的索引是 1,3 的索引是 2。

let numbers: number[] = [1, 2, 3];

元组

元组类型允许您表达一个具有固定数量元素的数组,这些元素的类型是已知的,但不一定是相同的。在处理需要具有特定结构的数组时,这增加了一层安全性。

示例

在下面的代码中,tuple 变量可以具有长度为 2 的数组作为值。元组的第一个元素是字符串类型,第二个元素是数字类型。

let tuple: [string, number] = ["hello", 10];
console.log(tuple); // Output: ["hello", 10]

枚举

枚举是相关值的集合,可以是数字值或字符串值。enum 使得以更易读的方式处理相关常量集变得更容易。

示例

在下面的代码中,Color 枚举包含不同的颜色。我们可以使用枚举名 Color 后跟一个点和颜色名称值来访问颜色。

enum Color {Red, Green, Blue}
let c: Color = Color.Green;
console.log(c); // Output: 1
广告