返回

从数组类型开始,玩转 TS 语言类型

前端

在上一篇文章中,我们探讨了数组类型。这次,我们继续前进,踏上探索 TS 语言类型之旅。准备好了吗?让我们开始吧!

联合类型:

联合类型允许我们为变量指定多种可能类型。例如,我们可以定义一个变量来存储数字或字符串:

let numOrString: number | string;
numOrString = 42; // 现在它是一个数字
numOrString = 'Hello'; // 现在它是一个字符串

枚举:

枚举是一种创建自定义类型的简单方法。它可以帮助我们定义一组相关值,并为这些值指定名称。例如,我们可以创建一个枚举来表示一周中的每一天:

enum DaysOfWeek {
  Monday,
  Tuesday,
  Wednesday,
  Thursday,
  Friday,
  Saturday,
  Sunday
}

let today: DaysOfWeek = DaysOfWeek.Friday;
console.log(today); // 输出:Friday

元组:

元组是一种有序的数据结构,可以存储不同类型的值。元组的每个元素都有一个固定的位置。例如,我们可以创建一个元组来存储一个人的姓名、年龄和职业:

let person: [string, number, string] = ['John', 30, 'Software Engineer'];
console.log(person); // 输出:[ 'John', 30, 'Software Engineer' ]

类型别名:

类型别名允许我们为现有类型创建一个新的名称。这有助于我们简化代码并提高可读性。例如,我们可以创建一个类型别名来表示一个数字或字符串:

type NumOrString = number | string;

let numOrString: NumOrString;
numOrString = 42; // 现在它是一个数字
numOrString = 'Hello'; // 现在它是一个字符串

接口:

接口是一种定义对象形状的方式。它允许我们指定对象应该具有的属性和方法。例如,我们可以创建一个接口来表示一个用户对象:

interface User {
  name: string;
  age: number;
  occupation: string;
}

let user: User = {
  name: 'John',
  age: 30,
  occupation: 'Software Engineer'
};

泛型:

泛型允许我们创建可重用的组件,这些组件可以处理不同类型的数据。例如,我们可以创建一个函数来对数组中的元素进行排序,无论数组中的元素是什么类型:

function sortArray<T>(array: T[]): T[] {
  // 对数组进行排序的代码
}

const numbers = [1, 2, 3, 4, 5];
const sortedNumbers = sortArray(numbers);

const strings = ['a', 'b', 'c', 'd', 'e'];
const sortedStrings = sortArray(strings);

类型断言:

类型断言允许我们显式地告诉编译器一个变量的类型。这在某些情况下非常有用,例如,当我们需要访问对象的属性或方法,但编译器无法推断出对象的类型时。

const obj = {
  name: 'John',
  age: 30
};

const name = obj.name as string; // 显式地告诉编译器 name 是一个字符串

以上就是 TS 语言类型的一些基本知识。通过使用这些类型,我们可以创建更健壮、更可维护的代码。