TypeScript 实践和介绍 | 青训营

61 阅读2分钟

TypeScript 类、泛型的使用实践记录:探讨TypeScript中的泛型的使用方法和场景,以及如何使用类型约束来增加代码的灵活性和安全性。

TypeScript 是 JavaScript 的一个超集,它为 JavaScript 添加了静态类型。其中,泛型是 TypeScript 中非常有用的一个特性,它允许我们创建可重用的组件,这些组件可以在多种类型上工作,而不会丢失类型信息。

1. 什么是泛型?

泛型,简单地说,就是为类型而不是值提供变量。这使得我们可以创建通用的函数、类和接口,而不是为每种数据类型都创建一个。

2. 泛型的基本使用

泛型函数

typescriptCopy code
function identity<T>(arg: T): T {
    return arg;
}

let output1 = identity<string>("myString");
let output2 = identity("myString");  // 类型推断

泛型接口

typescriptCopy code
interface GenericIdentityFn<T> {
    (arg: T): T;
}

let myIdentity: GenericIdentityFn<number> = identity;

泛型类

typescriptCopy code
class GenericNumber<T> {
    zeroValue: T;
    add: (x: T, y: T) => T;
}

let myGenericNumber = new GenericNumber<number>();
myGenericNumber.zeroValue = 0;
myGenericNumber.add = function(x, y) { return x + y; };

3. 使用类型约束

有时,我们想要限制泛型可以使用的类型。例如,我们有一个函数,该函数需要输入一个对象,并返回该对象的 length 属性:

typescriptCopy code
interface Lengthwise {
    length: number;
}

function loggingIdentity<T extends Lengthwise>(arg: T): T {
    console.log(arg.length);
    return arg;
}

4. 使用泛型的场景

  1. 当你希望函数、类或接口能够处理多种数据类型,而不是单一的数据类型。
  2. 当你希望提高代码的重用性,而不是为每种数据类型都写一个函数或类。
  3. 当你希望增加代码的灵活性和安全性,因为泛型可以帮助你捕获类型错误。

5. 总结

泛型是 TypeScript 中的一个强大特性,它为我们提供了更大的灵活性,同时保持了类型的安全性。通过使用泛型,我们可以创建更通用、可重用的代码,而不必为每种数据类型都写一个特定的函数或类。而通过使用类型约束,我们可以确保泛型在特定的类型上工作,从而提高代码的安全性。