返回
TypeScript学习笔记第五章高级类型(上)
前端
2023-10-21 22:57:55
在之前的文章中,我们学习了TypeScript的基本数据类型和一些常用的类型注解。在本章中,我们将学习TypeScript的高级类型,包括联合类型、交叉类型、泛型和枚举类型。这些类型可以帮助我们创建更加灵活和强大的代码。
联合类型
联合类型允许一个变量可以存储多种不同类型的值。例如,我们可以定义一个变量来存储数字或字符串:
let myVariable: number | string;
myVariable = 10;
myVariable = "Hello";
我们还可以使用联合类型来定义函数的参数类型。例如,我们可以定义一个函数来接受数字或字符串作为参数:
function myFunction(x: number | string) {
if (typeof x === "number") {
// Do something with the number
} else if (typeof x === "string") {
// Do something with the string
}
}
交叉类型
交叉类型允许我们组合多个类型来创建一个新的类型。例如,我们可以定义一个类型来表示具有姓名和年龄的人:
type Person = {
name: string;
age: number;
};
我们还可以使用交叉类型来定义函数的返回类型。例如,我们可以定义一个函数来返回一个包含姓名和年龄的元组:
function getPerson(): [string, number] {
return ["Alice", 20];
}
泛型
泛型允许我们创建可重用的组件,这些组件可以处理不同类型的数据。例如,我们可以定义一个泛型函数来对数组进行排序:
function sortArray<T>(array: T[]): T[] {
return array.sort();
}
这个函数可以用来对数组中的任何类型的数据进行排序。例如,我们可以使用它来对数组中的数字进行排序:
const numbers = [1, 2, 3, 4, 5];
const sortedNumbers = sortArray(numbers);
或者,我们可以使用它来对数组中的字符串进行排序:
const strings = ["Alice", "Bob", "Charlie"];
const sortedStrings = sortArray(strings);
枚举类型
枚举类型允许我们定义一组命名常量。例如,我们可以定义一个枚举类型来表示一周中的天数:
enum DaysOfWeek {
Sunday,
Monday,
Tuesday,
Wednesday,
Thursday,
Friday,
Saturday,
}
我们可以使用枚举类型来定义变量:
let today: DaysOfWeek = DaysOfWeek.Friday;
我们还可以使用枚举类型来定义函数的参数类型:
function isWeekend(day: DaysOfWeek): boolean {
return day === DaysOfWeek.Saturday || day === DaysOfWeek.Sunday;
}
小结
联合类型、交叉类型、泛型和枚举类型都是TypeScript的高级类型。这些类型可以帮助我们创建更加灵活和强大的代码。
在下一篇文章中,我们将继续学习TypeScript的高级类型,包括类型别名、模块和命名空间。