📜  多种类型的打字稿泛型 - TypeScript (1)

📅  最后修改于: 2023-12-03 14:51:40.864000             🧑  作者: Mango

多种类型的打字稿泛型 - TypeScript

在 TypeScript 中,泛型是一种强大的工具,可用于创建具有多种类型的打字稿。泛型允许我们编写可重用的代码,能够适应不同类型的数据和变量。

泛型函数

泛型函数是一种可以处理多种类型的函数。通过在函数定义时使用泛型参数,我们可以使函数接受并处理不同类型的参数。

function printArray<T>(arr: T[]): void {
  for (let ele of arr) {
    console.log(ele);
  }
}

// 使用泛型函数打印数组
let numbers = [1, 2, 3, 4, 5];
printArray(numbers);

let names = ["Alice", "Bob", "Charlie"];
printArray(names);

在上面的示例中,printArray 函数是一个泛型函数,它接受一个数组参数 arr,该数组可以包含不同类型的元素。通过使用泛型参数 <T>,我们可以在编译时动态确定数组元素的类型,并进行相应的操作。

泛型类

和泛型函数一样,泛型类也可以处理多种类型的数据。通过将泛型参数用作类属性或方法的类型,我们可以创建通用的类。

class Stack<T> {
  private items: T[] = [];

  push(item: T): void {
    this.items.push(item);
  }

  pop(): T | undefined {
    return this.items.pop();
  }
}

// 使用泛型类创建不同类型的堆栈
let numberStack = new Stack<number>();
numberStack.push(1);
numberStack.push(2);
numberStack.push(3);

console.log(numberStack.pop()); // 输出 3

let stringStack = new Stack<string>();
stringStack.push("Hello");
stringStack.push("World");

console.log(stringStack.pop()); // 输出 "World"

上面的示例展示了使用泛型类创建堆栈的方式。通过将堆栈数据的类型作为泛型参数 <T>,我们可以创建具有不同类型的堆栈,并在添加和弹出元素时保持类型安全。

泛型接口

泛型接口允许我们定义可以适应多种类型的接口。通过在接口定义时使用泛型参数,我们可以在实现接口时指定具体的类型。

interface Pair<T, U> {
  first: T;
  second: U;
}

// 使用泛型接口创建不同类型的键值对
let numberPair: Pair<number, string> = {
  first: 1,
  second: "one"
};

let stringPair: Pair<string, boolean> = {
  first: "isTrue",
  second: true
};

在上面的示例中,Pair 是一个泛型接口,它具有 firstsecond 两个属性,可以分别指定不同的数据类型。通过在使用接口时指定泛型参数的具体类型,我们可以创建不同类型的键值对。

总结

通过使用泛型,我们可以在 TypeScript 中处理多种类型的数据和变量。泛型函数、泛型类和泛型接口都是强大的工具,可以帮助我们编写灵活、可重用的代码。无论是处理数组、数据结构还是通用的数据类型,泛型都是 TypeScript 程序员必备的技巧之一。

以上是关于多种类型的打字稿泛型 - TypeScript 的介绍。希望本文能帮助你更好地理解和应用 TypeScript 中的泛型概念。

(以上内容已经按照 markdown 格式进行标注。)