TypeScript - 类型
原创TypeScript - 类型
类型系统代表了语言支持的不同值类型。类型系统会在值被程序存储或操作之前检查其有效性,确保代码按预期运行。类型系统还提供了更丰富的代码提示和自动化文档功能。
TypeScript作为其可选类型系统的一部分提供了数据类型。数据类型分类如下:
Any类型
any数据类型是TypeScript中所有类型的超类型,它表示动态类型。使用any类型相当于为变量选择退出类型检查。
内置类型
下表展示了TypeScript中的所有内置类型:
| 数据类型 | 关键字 | 描述 |
|---|---|---|
| Number | number | 双精度64位浮点值,可用于表示整数和小数。 |
| String | string | 表示Unicode字符序列 |
| Boolean | boolean | 表示逻辑值true和false |
| Void | void | 用于函数返回类型,表示不返回值的函数 |
| Null | null | 表示对象值的故意缺失 |
| Undefined | undefined | 表示赋给所有未初始化变量的值 |
| Symbol | symbol | ES2015中引入的唯一且不可变的原始类型 |
| Object | object | 表示用户定义的类、数组、函数等的实例 |
| Never | never | 表示永不出现的值 |
TypeScript和JavaScript中没有整数类型。
现在,让我们详细了解每个内置数据类型。
Number
在TypeScript中,number数据类型可以存储整数、浮点数、二进制数、十进制数、十六进制数等。但是,所有整数在TypeScript中都表示为浮点数。
示例
在下面的代码中,age和marks变量都是number类型。age变量包含整数值,marks变量包含浮点数值。
// 整数 let age: number = 30; // 浮点数 let marks: number = 30.5;
String
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}`;
Boolean
在TypeScript中,Boolean数据类型允许您表示逻辑实体。它存储true或false值。布尔变量主要用于if-else或switch等条件语句中,根据某个逻辑值执行流程。
示例
在下面的代码中,isReady是boolean类型的变量,包含true值。
let isReady: boolean = true;
Symbol
symbol是一种原始数据类型,主要用于创建唯一值。它允许开发者创建不会与其他键冲突的唯一对象键。
示例
这里,我们使用了Symbol()构造函数,它返回新的唯一键。我们使用UNIQUE_KEY作为obj对象的键。
// 定义一个symbol
const UNIQUE_KEY = Symbol();
// 使用symbol作为对象中的属性键
let obj = {
[UNIQUE_KEY]: "SecretValue"
};
Null
TypeScript中的null类型表示任何对象值的故意缺失。它是原始类型之一,通常用于指示变量故意指向无对象。
示例
在下面的代码中,empty变量包含null值。
let empty: null = null;
Undefined
undefined数据类型表示值的缺失。当一个变量被声明但未初始化时,它包含undefined值。
示例
在下面的代码中,undef变量包含undefined值。
let undef: undefined;
Null和undefined - 它们相同吗?
null和undefined数据类型常常令人困惑。null和undefined不能用作变量的数据类型引用。它们只能作为值赋给变量。
然而,null和undefined并不相同。用undefined初始化的变量意味着该变量没有赋值或对象,而null意味着该变量已被设置为一个值为undefined的对象。
Object
object是非原始数据类型,可以包含不是数字、字符串、布尔值、symbol、null或undefined的任何值。您可以使用对象字面量或Object()构造函数创建对象。
示例
在下面的代码中,我们使用对象字面量创建了对象。person变量的类型是object。我们在花括号(对象字面量)之间添加了键值对。
let person: object = {name: "Bob"};
Void
void类型用于不返回值的函数的返回类型。它表示完全没有类型。
示例
这里,我们在函数中使用了void数据类型,不从函数返回任何值。
function log(): void {
console.log("log");
}
用户定义类型
用户定义类型包括枚举(enums)、类、接口、数组和元组。这些将在后面的章节中详细讨论。
Array
数组数据类型是相同元素的集合。它存储元素,您可以使用从0开始的数组索引访问或更新这些元素。
任何数据类型的数组都可以定义为data_type[]或Array<data_type>,其中<data_type>可以是任何原始或非原始数据类型。
示例
在下面的代码中,我们定义了一个包含3个元素的数字数组。1的索引是0,2的索引是1,3的索引是2。
let numbers: number[] = [1, 2, 3];
Tuple
元组类型允许您表达一个具有固定数量元素的数组,这些元素的类型已知但不一定相同。这在处理需要具有特定结构的数组时增加了一层安全性。
示例
在下面的代码中,tuple变量可以有一个长度为2的数组作为值。元组的第一个元素是string类型,第二个元素是number类型。
let tuple: [string, number] = ["hello", 10]; console.log(tuple); // 输出: ["hello", 10]
Enum
枚举是一组相关值的集合,可以是数字值或字符串值。enum使得以更可读的方式处理相关常量集合变得容易。
示例
在下面的代码中,Color枚举包含不同的颜色。我们可以使用枚举名称Color后跟点和颜色名称值来访问颜色。
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
console.log(c); // 输出: 1
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权本站发表,未经许可,不得转载。
开发学习网




