TypeScript 文档学习:常见类型(下)
2023-09-03 16:08:04
类型在 TypeScript 中无处不在,不仅出现在类型注解 (type annotations)中,还出现在其他很多地方。我们不仅要学习类型本身,也要学习在什么地方使用这些类型产生新的结构。
1. 联合类型
联合类型表示一个值可以是多种类型之一。联合类型使用 |
符号来分隔不同的类型。例如:
let x: string | number;
x = "Hello";
x = 123;
在这个例子中,x
可以是字符串类型或数字类型。
2. 交叉类型
交叉类型表示一个值同时具有多种类型的特征。交叉类型使用 &
符号来连接不同的类型。例如:
type Person = {
name: string;
age: number;
};
type Employee = Person & {
salary: number;
};
let employee: Employee = {
name: "John",
age: 30,
salary: 100000
};
在这个例子中,Employee
类型是 Person
类型和 { salary: number }
类型的交叉类型。Employee
类型的值必须同时具有 Person
类型的特征和 { salary: number }
类型的特征。
3. 索引类型
索引类型表示一个对象或数组的元素的类型。索引类型使用 []
符号来表示。例如:
let ages: { [name: string]: number } = {
"John": 30,
"Mary": 25
};
在这个例子中,ages
类型的键是字符串类型,值是数字类型。
4. 条件类型
条件类型表示一个值的类型取决于另一个值的类型。条件类型使用 extends
来表示。例如:
type IsString<T> = T extends string ? true : false;
let x: IsString<"Hello"> = true;
let y: IsString<123> = false;
在这个例子中,IsString
类型是一个条件类型,它表示一个值的类型是字符串类型,则返回 true
,否则返回 false
。
5. 元组
元组表示一个固定长度和类型的元素列表。元组使用 []
符号来表示。例如:
let tuple: [string, number] = ["Hello", 123];
在这个例子中,tuple
类型的第一个元素是字符串类型,第二个元素是数字类型。
6. 枚举
枚举表示一组具有相同类型的常量。枚举使用 enum
关键字来表示。例如:
enum Colors {
Red,
Green,
Blue
}
let color: Colors = Colors.Red;
在这个例子中,Colors
枚举是一个常量集合,它包含三个成员:Red
、Green
和 Blue
。
7. 类型别名
类型别名表示一个新的类型,它与另一个类型具有相同的特征。类型别名使用 type
关键字来表示。例如:
type MyString = string;
let x: MyString = "Hello";
在这个例子中,MyString
类型是一个类型别名,它与 string
类型具有相同的特征。
8. 命名空间
命名空间表示一个包含类型、函数和变量的独立作用域。命名空间使用 namespace
关键字来表示。例如:
namespace MyNamespace {
export type MyType = string;
export function myFunction(): void {
console.log("Hello");
}
export let myVariable = "Hello";
}
let x: MyNamespace.MyType = "Hello";
MyNamespace.myFunction();
console.log(MyNamespace.myVariable);
在这个例子中,MyNamespace
命名空间是一个独立的作用域,它包含 MyType
类型、myFunction
函数和 myVariable
变量。
9. 总结
本文介绍了 TypeScript 中常见的类型,包括联合类型、交叉类型、索引类型、条件类型、元组、枚举、类型别名和命名空间。通过本文,您将深入了解 TypeScript 的类型系统,并能够更加熟练地使用 TypeScript 进行开发。