泛型是一种在函数和类中广泛使用的参数化类型,它允许我们使用一个占位符类型来表示一个实际的类型。
这个占位符类型可以用在函数的参数、返回值类型、类的属性、方法参数、返回值类型等多个地方。
泛型函数是指在函数定义时使用泛型类型参数的函数。
例如,以下是一个简单的泛型函数,它返回一个数组中最小的元素:
javascript function min(arr: T[]): T { let min = arr[0]; for (let i = 1; i < arr.length; i++) { if (arr[i] < min) { min = arr[i]; } } return min; }
在这个例子中,我们使用了泛型类型参数T来表示数组中的元素类型。在函数体中,我们使用了小于号(<)来比较元素的大小,因此,我们需要确保数组元素的类型支持小于运算符。
泛型类是指在类定义时使用泛型类型参数的类。
例如,以下是一个简单的泛型类,它包装了一个值,并提供了一些方法来操作这个值:
javascript class Box{ private value: T; constructor(value: T) { this.value = value; } getValue(): T { return this.value; } setValue(value: T) { this.value = value; } }
在这个例子中,我们使用了泛型类型参数T来表示Box类包装的值的类型。在构造函数中,我们接收一个值,并将其赋值给value属性。在getValue和setValue方法中,我们使用泛型类型参数T来表示返回值的类型和方法参数的类型。
泛型是一种强大的工具,它可以帮助我们编写更加通用和灵活的代码。在JavaScript中,泛型可以用于函数和类中,它们提供了一个参数化类型的机制,让我们可以更加方便地编写代码。